批改状态:合格
老师批语:
<?php// *预处理第1种方案:匿名参数+索引数组namespace _221124a;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):insert$sql="INSERT INTO staff(`name`,`sex`,`eamil`)VALUES(?,?,?)";// $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?,`email`= ?;';// *对sql语句进行预处理$stmt=$db->prepare($sql);// *放入实参$data=['刘备',0,'liubei@qq.com'];//* 执行sql$stmt->execute($data);//* 验证: 打印sql预处理命令(正式运行时注释掉)$stmt->debugDumpParams();echo '新增成功, id = ' . $db->lastInsertId() . '<br>';


<?php// *预处理第2种方案:命名参数+关联数组namespace _221124b;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):insert$sql="INSERT INTO staff(`name`,`sex`,`eamil`)VALUES(:name,:sex,:email)";//$sql = 'INSERT `staff` SET `name`= :name,`sex`= :sex,`email`= :email;';// *对sql语句进行预处理$stmt=$db->prepare($sql);// *放入实参$data=['name'=>'关羽','sex'=>0,'email'=>'guanyu@qq.com'];//* 执行sql$stmt->execute($data);//* 验证: 打印sql预处理命令(正式运行时注释掉)$stmt->debugDumpParams();echo '新增成功, id = ' . $db->lastInsertId() . '<br>';


<?php// *预处理第3种方案:参数绑定:值绑定 bindValue()namespace _221124c;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):insert// $sql="INSERT INTO staff(`name`,`sex`,`eamil`)VALUES(?,?,?)";// *运用heredoc多行语句$sql=<<< SQLINSERT INTO staff (`name`,`sex`,`eamil`)VALUES (?,?,?);SQL;// *对sql语句进行预处理$stmt=$db->prepare($sql);// *bindValue(key,value,type): 匿名占位符,key:索引是从1开始$stmt->bindValue(1, '曹操', PDO::PARAM_STR);$stmt->bindValue(2, 0, PDO::PARAM_INT);$stmt->bindValue(3, 'caocao@qq.com', PDO::PARAM_STR);// 执行sql$stmt->execute();echo '新增成功, id = ' . $db->lastInsertId() . '<br>';


<?php// *预处理第4种方案:动态绑定bindParam()namespace _221124d;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):insert$sql="INSERT INTO staff(`name`,`sex`,`eamil`)VALUES(?,?,?)";// *对sql语句进行预处理$stmt=$db->prepare($sql);//* 引用绑定: 动态绑定,绑定的不是数据本身,而它的地址/引用/别名$stmt->bindParam(1, $name, PDO::PARAM_STR);$stmt->bindParam(2, $sex, PDO::PARAM_INT);$stmt->bindParam(3, $email, PDO::PARAM_STR);// *列表参数输入实参// list($name, $sex, $email)=['孔明', 0, 'kongmin@qq.com'];// *执行sql// $stmt->execute();// echo '新增成功, id = ' . $db->lastInsertId() . '<br>';// *再新增一条// *列表参数输入实参list($name, $sex, $email)=['赵云', 0, 'zaoyun@qq.com'];//*再执行sql$stmt->execute();echo '新增成功, id = ' . $db->lastInsertId() . '<br>';



<?php// *动态绑定中使用foreach()代替list()一次性插入多条语句namespace _221124e;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):insert$sql="INSERT INTO staff(`name`,`sex`,`eamil`)VALUES(?,?,?)";// *对sql语句进行预处理$stmt=$db->prepare($sql);//* 引用绑定: 动态绑定,绑定的不是数据本身,而它的地址/引用/别名$stmt->bindParam(1, $name, PDO::PARAM_STR);$stmt->bindParam(2, $sex, PDO::PARAM_INT);$stmt->bindParam(3, $email, PDO::PARAM_STR);// *利用二维数组来输入多条实参$data=[['宋江',0,'songjian@qq.com'],['林冲',0,'lincong@qq.com'],['孙二娘',1,'sunerliang@qq.com'],];// *相当于多次遍历list(x1,x2,x3)=[y1,y2,y3]foreach ($data as list($name, $sex, $email)) {// *执行sql$stmt->execute();echo '新增成功, id = ' . $db->lastInsertId() . '<br>';}


<?php// *sql语句执行时,判断执行成功或者失败,并加入不同的代码namespace _221124f;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):insert$sql="INSERT INTO staff(`name`,`sax`,`eamil`)VALUES(?,?,?)";// $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?,`email`= ?;';// *对sql语句进行预处理$stmt=$db->prepare($sql);// *放入实参$data=['孙权',0,'sunquan@qq.com'];// *执行时,判断是否成功或失败:$stmt->execute($data) : true / falseif ($stmt->execute($data)) {echo '新增成功, id = ' . $db->lastInsertId() . '<br>';} else {// *falseecho 'sql执行失败';print_r($stmt->errorInfo());}

<?php// *利用rowCount()方法看写操作中的增删改是否成功与否namespace _221124g;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):insert$sql="INSERT INTO staff(`name`,`sex`,`eamil`)VALUES(?,?,?)";// $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?,`email`= ?;';// *对sql语句进行预处理$stmt=$db->prepare($sql);// *放入实参$data=['周瑜',0,'zouyu@qq.com'];// *执行时,判断是否成功或失败:$stmt->execute($data) : true / falseif ($stmt->execute($data)) {if ($stmt->rowCount() > 0) {// *successecho '新增成功, id = ' . $db->lastInsertId() . '<br>';} else {// *failecho '新增失败';print_r($stmt->errorInfo());}} else {// *falseecho 'sql执行失败';print_r($stmt->errorInfo());}


<?php// *利用第1种方案对数据进行更新namespace _221124h;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):update$sql="UPDATE `staff` SET `name`= ?,`sex`= ?,`eamil`= ? WHERE `id` = ?" ;// *特别提示:绝对禁止"无条件更新"// *检测一下sql语句中, 是否存在 where 子句// *strpos, stripos:忽略大小写if (false === stripos($sql, 'where')) {exit('禁止无条件更新');}// *对sql语句进行预处理$stmt = $db->prepare($sql);// *放入修改的实参$data = ['张艳丽', 1, 'zyl@qq.com', 5];// *执行sqlif ($stmt->execute($data)) {if ($stmt->rowCount() > 0) {echo '成功的更新了 '.$stmt->rowCount() . '条记录~~';} else {// *主要用于检测是否重复执行echo '没有记录被更新';print_r($stmt->errorInfo());}} else {echo 'sql执行失败';print_r($stmt->errorInfo());}



<?php// *利用第1种方案对数据进行删除namespace _221124i;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):delete$sql = "DELETE FROM `staff` WHERE `id` = ?";//* 特别提示:绝对禁止"无条件删除"if (false === stripos($sql, 'where')) {exit('禁止无条件删除');}// *对sql语句进行预处理$stmt = $db->prepare($sql);// *执行sqlif ($stmt->execute([2])) {if ($stmt->rowCount() > 0) {echo '成功的删除了 '.$stmt->rowCount() . ' 条记录~~';} else {// 主要用于检测是否重复执行echo '没有记录被删除';print_r($stmt->errorInfo());}} else {echo 'sql执行失败';print_r($stmt->errorInfo());// $stmt->debugDumpParams();}



<?php// *预处理第5种方案:逐条获取fetch()namespace _221124j;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):select$sql = "SELECT `id`,`name`,`eamil` FROM `staff`LIMIT ?";// *对sql语句进行预处理$stmt = $db->prepare($sql);// *数据指针位置从1开始:$index=1;// *数据指针下移的条数:$num=3;// *sql语句预处理绑定的参数$stmt->bindParam($index,$num,PDO::PARAM_INT);// *执行sqlif ($stmt->execute()) {// *fetch(): 逐条获取,指针自动后移指向下一条, false / 记录//* PDO::FETCH_ASSOC: 只返回关联数组// *while循环while ($staff = $stmt->fetch(PDO::FETCH_ASSOC)) {printf('<pre>%s</pre>', print_r($staff, true));}} else {echo 'sql执行失败';print_r($stmt->errorInfo());}

<?php// *预处理第6种方案:全部获取fetchAll()namespace _221124k;use PDO;// *连接$db = new PDO('mysql:dbname=phpedu1', 'root', 'root');// *sql语句:CURD(增删改查):select$sql = "SELECT `id`,`name`,`eamil` FROM `staff`LIMIT ?";// *对sql语句进行预处理$stmt = $db->prepare($sql);// *数据指针位置从1开始:$index=1;// *数据指针下移的条数:$num=4;// *sql语句预处理绑定的参数$stmt->bindParam($index,$num,PDO::PARAM_INT);// *执行sqlif ($stmt->execute()) {// *fetchAll(): 获取全部满足条件的记录$staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);// *foreach()(把二维数组作为一维数组逐个进行遍历,然后逐个进行打印)foreach ($staffs as $staff) {printf('<pre>%s</pre>', print_r($staff, true));}} else {echo 'sql执行失败';print_r($stmt->errorInfo());}

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