Correction status:qualified
Teacher's comments:
MySQLi面向对象实现更新操作
<?php /** * 新增操作,简化版 * 刚才的案例发现,如果同时插入多条记录,会产生大量的重复冗余代码 * 我们可以循环来简化 * 更新与删除: update/delete与这个操作流程完全一致,请同学们自己尝试改写 */ //1.连接数据库 require 'mysqli_connect.php'; //2.准备SQL语句 $sql = "update staff set salary = ? WHERE name = ?;"; //3.创建STMT预处理对象 $stmt = $mysqli->stmt_init(); //4.检测预处理SQL语句 if ($stmt->prepare($sql)) { //用二维数组来保存要更新的记录 $data[] = ['salary'=>8600,'name'=> '成昆1']; //绑定参数到预处理SQL语句 $stmt->bind_param('is',$salary,$name); foreach ($data as $staff) { //准备要更新的数据 $salary = $staff['salary']; $name = $staff['name']; //执行预处理语句 $stmt->execute(); //检测运行结果 if ($stmt->affected_rows > 0 ){ echo '<br>成功更新'.$stmt->affected_rows.'条记录'; } else { echo '<br>没有更新记录'; } } //5.注销stmt对象 $stmt->close(); } else { //返回错误信息 exit($stmt->errno.':'.$stmt->error); } //6. 关闭数据库连接 $mysqli->close();
点击 "运行实例" 按钮查看在线实例
MySQLi面向对象实现删除操作
<?php /** * 新增操作,简化版 * 刚才的案例发现,如果同时插入多条记录,会产生大量的重复冗余代码 * 我们可以循环来简化 * 更新与删除: update/delete与这个操作流程完全一致,请同学们自己尝试改写 */ //1.连接数据库 require 'mysqli_connect.php'; //2.准备SQL语句 $sql = "DELETE from staff WHERE name = ?;"; //3.创建STMT预处理对象 $stmt = $mysqli->stmt_init(); //4.检测预处理SQL语句 if ($stmt->prepare($sql)) { //用二维数组来保存要删除的记录 $data[] = ['name'=> '灭绝师太1']; //绑定参数到预处理SQL语句 $stmt->bind_param('s',$name); foreach ($data as $staff) { //准备要插入的数据 $name = $staff['name']; //执行预处理语句 $stmt->execute(); //检测运行结果 if ($stmt->affected_rows > 0 ){ echo '<br>成功删除'.$stmt->affected_rows.'条记录'; } else { echo '<br>没有删除记录'; } } //5.注销stmt对象 $stmt->close(); } else { //返回错误信息 exit($stmt->errno.':'.$stmt->error); } //6. 关闭数据库连接 $mysqli->close();
点击 "运行实例" 按钮查看在线实例
PDO实现删除操作
<?php /** * 预处理删除数据 */ //1.连接数据库,创建pdo对象 try { $pdo = new PDO('mysql:dbname=php','root','root'); } catch (PDOException $e) { exit($e->getMessage()); } //2.准备sql语句 $sql = "delete from staff where staff_id=:staff_id;"; //3.创建预处理对象stmt对象 if($stmt = $pdo->prepare($sql)) { //4.将参数绑定到stmt对象并执行 //准备参数 $param = ['staff_id'=>5]; //绑定参数到SQL语句对象并执行 if ($stmt -> execute($param)){ //rowCount()返回更新的数量,如果大于0表示有记录被更新啦 if ($stmt->rowCount()>0) { echo '成功删除了'.$stmt->rowCount().'条记录'; } else { //等于0表示没有记录被更新 echo '没有记录被删除'; } } else { //执行失败的信息 print_r($stmt->errorInfo()); exit(); } } else { //$stmt语句对象创建失败 print_r($pdo->errorInfo()); exit(); }
点击 "运行实例" 按钮查看在线实例