批改状态:合格
老师批语:
<?phpnamespace pdo;use PDO;/*** 连接数据库* 参数1:数据库连接字符串 数据库驱动、服务器地址、数据库名称、端口号、字符编码* 参数2:数据库用户* 参数3:数据库密码* 匿名参数+索引数组+值绑定*/$db = new PDO('mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8', 'root', 'root');// 创建sql语句 使用匿名参数$sql = "INSERT `user` SET `name`=?,`sex`=?,`email`=?;";// 创建PDOStatement对象$stmt =$db->prepare($sql);// 索引数组 使用list解构list($name,$sex,$email) = ['崔瀺',0,'cuichan@qq.com'];// 值绑定 解决数组传参时,execute()默认参数是字符串类型// 通过bindValue()值绑定强制转换// 参数1:数组索引+1 参数2: 传入的数据变量 参数3:数据类型$stmt->bindValue(1, $name,PDO::PARAM_STR);$stmt->bindValue(2, $sex,PDO::PARAM_INT);$stmt->bindValue(3, $email,PDO::PARAM_STR);// 执行sqlif ($stmt->execute()) {if ($stmt->rowCount() > 0) {echo '成功的添加了 '.$stmt->rowCount() . '条记录~~, id为: '. $db->lastInsertId();} else {// 主要用于检测是否重复执行echo '没有添加成功';print_r($stmt->errorInfo());}} else {echo 'sql执行失败';print_r($stmt->errorInfo());}// 关闭数据库unset($db);

<?phpnamespace pdo;use PDO;// 连接数据库// 命名参数+关联数组+引用绑定$db = new PDO('mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8', 'root', 'root');// 创建sql语句 使用命名参数$sql = "INSERT `user` SET `name`=:name,`sex`=:sex,`email`=:email;";// 创建PDOStatement对象$stmt = $db->prepare($sql);// bindParam()引用绑定// 参数1:键名 参数2: 传入的数据变量 参数3:数据类型$stmt->bindParam('name', $name, PDO::PARAM_STR);$stmt->bindParam('sex', $sex, PDO::PARAM_INT);$stmt->bindParam('email', $email, PDO::PARAM_STR);// 准备多条数据 关联数组$data = [['name' => '刘十六', 'sex' => 0, 'email' => 'liushiliu@qq.com'],['name' => '左右', 'sex' => 0, 'email' => 'zuoyou@qq.com'],['name' => '齐静春', 'sex' => 0, 'email' => 'qijingchun@qq.com'],['name' => '陈平安', 'sex' => 0, 'email' => 'chenpingan@qq.com']];// 多条数据添加 关联数组解构foreach ($data as list('name' => $name, 'sex' => $sex, 'email' => $email)) {// 执行sql$stmt->execute();echo '添加成功, id = ' . $db->lastInsertId() . '<br>';}// 关闭数据库unset($db);

<?phpnamespace pdo;use PDO;// 连接数据库$db = new PDO('mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8', 'root', 'root');// 更新操作 当sql语句过多时,可以用 heredoc 句法结构 来写sql// 匿名参数$sql = <<< SQLUPDATE `user`SET `name`= ?,`sex`= ?,`email`= ?WHERE `id` = ? ;SQL;// 特别提示:绝对禁止"无条件更新"// 检测一下sql语句中, 是否存在 where 子句// strpos, stripos:忽略大小写if (stripos($sql, 'where')===false) {exit('禁止无条件更新');}// 创建PDOStatement对象$stmt = $db->prepare($sql);// 索引数组方式传参 修改id=2的数据$data = ['宁姚', 1, 'ningyao@qq.com', 2];// 执行sqlif ($stmt->execute($data)) {// $stmt->rowCount():返回受影响的行数,大于0则sql执行成功,反之执行失败if ($stmt->rowCount() > 0) {echo '成功的更新了 '.$stmt->rowCount() . '条记录~~';} else {// 主要用于检测是否重复执行echo '没有记录被更新';print_r($stmt->errorInfo());}} else {echo 'sql执行失败';// 打印失败信息print_r($stmt->errorInfo());}// 关闭数据库unset($db);

<?phpnamespace pdo;use PDO;// 连接数据库$db = new PDO('mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8', 'root', 'root');// 删除操作// 匿名参数$sql = "DELETE FROM `user` WHERE `id` = ?;";// 特别提示:绝对禁止"无条件删除"// 检测一下sql语句中, 是否存在 where 子句// strpos, stripos: 忽略大小写if (stripos($sql, 'where') === false) {exit('禁止无条件删除');}// 创建PDOStatement对象$stmt = $db->prepare($sql);// 执行sql 删除ID=7的数据if ($stmt->execute([7])) {// $stmt->rowCount():返回受影响的行数,大于0则sql执行成功,反之执行失败if ($stmt->rowCount() > 0) {echo '成功的删除了 ' . $stmt->rowCount() . '条记录~~';} else {// 主要用于检测是否重复执行echo '没有记录被删除';print_r($stmt->errorInfo());}} else {echo 'sql执行失败';// 打印失败信息print_r($stmt->errorInfo());}// 关闭数据库unset($db);

<?phpnamespace pdo;use PDO;// 连接数据库$db = new PDO('mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8', 'root', 'root');// 查询?条数据 返回字段有id、name、email,没有sex字段$sql = 'SELECT `id`,`name`,`email` FROM `user`LIMIT ?';// 创建PDOStatement对象$stmt = $db->prepare($sql);// 值绑定 转为int类型 查询前5条数据$stmt->bindValue(1, 5, PDO::PARAM_INT);// 执行sqlif ($stmt->execute()) {// fetch()逐条查询// PDO::FETCH_ASSOC 过滤索引数组,保留关联数组while ($staff = $stmt->fetch(PDO::FETCH_ASSOC)) {// 格式化打印输出printf('<pre>%s</pre>', print_r($staff, true));}} else {echo 'sql执行失败';print_r($stmt->errorInfo());}// 关闭数据库unset($db);

<?phpnamespace pdo;use PDO;// 连接数据库$db = new PDO('mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8', 'root', 'root');// 返回字段有id、name、email,没有sex字段$sql = 'SELECT `id`,`name`,`email` FROM `user` WHERE id>?;';// 创建PDOStatement对象$stmt = $db->prepare($sql);// 值绑定 转为int类型 查询id大于2的所有数据$stmt->bindValue(1, 2, PDO::PARAM_INT);// 执行sqlif ($stmt->execute()) {// fetchAll(): 获取全部满足条件的记录// PDO::FETCH_ASSOC 过滤索引数组,保留关联数组$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);foreach ($staffs as $staff) {// 格式化打印输出printf('<pre>%s</pre>', print_r($staff, true));}} else {echo 'sql执行失败';print_r($stmt->errorInfo());}// 关闭数据库unset($db);

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号