批改状态:合格
老师批语:
索引数组+匿名参数
1.1 $变量名1 = ‘INSERT ‘数据库表名’ SET 表列名1 = ?,表列名2 = ?….;’
1.2 $变量名2 = $db->prepare($变量名1),创建模板sql语句,预处理对象
1.3 索引数组与表列名的参数一一对应,依次传入
1.4 $变量名2 -> execute(数组名),生成最终的(传参后的)sql语句,并且执行
关联数组+命名参数
2.1 $变量名1 = ‘INSERT ‘数据库表名’ SET 表列名1 = :变量1,表列名2 = 变量2….;’
2.2 $变量名2 = $db->prepare($变量名1),创建模板sql语句
2.3 关联数组的键值与sql语句模板的变量一一对应,依次传入;
2.4 $变量名2 -> execute(数组名),生成最终的(传参后的)sql语句,并且执行
参数绑定:值绑定 bindValue()
3.1 对预处理对象进行值绑定,对象->bindValue(索引,变量,参数类型),execute()不需要传入参数,直接执行execute()即可
3.2 该值为静态绑定,sql模板绑定到了具体的值,变量直接必须先声明才可用;
参数绑定:引用绑定 bindParam():
4.1 对预处理对象进行值绑定,对象->bindValue(索引,变量,参数类型),execute()不需要传入参数,直接执行execute()即可
4.2 该值为静态绑定,sql模板绑定到了具体的变量,本身变量就是一个声明,下面对变量进行传参即可;
4.3 推荐只是用引用绑定
二维数组-新增多条数据,
5.1 使用引用绑定,配合foreach遍历执行sql语句
5.2 foreach配合list循环解构数组,结合引用帮定的特性,新增多条数据
失败的检测与处理
6.1 预处理对象->rowCount():可以返回影响的记录数量—就是成功数量
6.2 连接实例->lastInsertId():可以返回最新的id号
6.3 预处理对象->errorInfo():可以返回失败的原因
6.4 rowCount作为条件,判断新增失败,还是成功,
数据更新操作
7.1 $变量名1 = ‘UPDATE ‘数据库表名’ SET 表列名1 = ?,表列名2 = ?….WHERE ‘id’ = ?;’
7.2 strpos:判断某个字符串中是否包含某个字符,stripos:一样,区别可忽略大小写
7.3 WHERE为条件,参数传入与表列名方式一致,注意禁止无条件更新,否则会更新全部
数据删除操作
8.1 $变量名1 = ‘DELETE FROM ‘数据库表名’WHERE ‘id’ = ?;’
8.2 注意禁止无条件删除,否则会删除整表
数据查询操作
9.1 $变量名1 = ‘SELECT 表列名1,表列名2…FROM 数据库表名 LIMIT ?;’(LIMIT表示前几列)
9.2 fetch+while逐个循环输出,fetch:指针自动下移,出现一次移动一次,配合while使用
9.3 fetchAll+foreach,循环遍历输出,fetchAll直接输出一个二维数组,用foreach的值特性遍历输出,
9.4 fetch以及fetchAll添加属性:PDO::FETCH_ASSOC,返回的结果为关联数组,就是键(列名)=>内容
源码实例
<?phpnamespace _0817;use PDO;use PDOStatement;use test\control\test1;$dsn = 'mysql:host=localhost;dbname=phpedu;port:3306;charset=utf8';$username = 'root';$password = 'root';$db = new PDO($dsn,$username,$password);// // 插入数据// $sqlinsert = 'INSERT `test` SET `sn` = ?, `frn` = ?, `imsi` = ?;';// $sql = 'INSERT `staff` SET `name`= ?,`sex`= ?,`email`= ?;';// 创建sql语句对象,制作模板的sql语句// $stmt = $db->prepare($sqlinsert);// $stmt->bindParam(1,$sn,PDO::PARAM_STR);// $stmt->bindParam(2,$frn,PDO::PARAM_STR);// $stmt->bindParam(3,$imsi,PDO::PARAM_STR);// $data = [['11','38950','46011'],// ['22','38400','46001'],// ['33','38950','46002']];// 遍历一次:list($sn,$frn,$imsi)=一个数组,就解构一次// foreach($data as list($sn,$frn,$imsi)){// $stmt->execute();// echo '新增成功, id = ' . $db->lastInsertId() . '<br>';// };// 条件查询,用where// $sqlselect = 'SELECT `sn`,`frn`,`imsi` FROM `test` where `imsi`="460001234512345";';$sqlselect = 'SELECT `sn`,`frn`,`imsi` FROM `test`;';// $sqlselect = 'SELECT `sn`,`frn`,`imsi` FROM `test` LIMIT ?;' ;// LIMIT ?:查询前面几个,$stmt = $db->prepare($sqlselect);// $stmt->bindValue(1,5,PDO::PARAM_INT);if($stmt->execute()){// $result = $stmt->fetch(PDO::FETCH_ASSOC);// if ($result){// printf('<pre>%s</pre>',print_r($result,true));// }else{// echo '无';// }// fetch+while循环// while($result = $stmt->fetch(PDO::FETCH_ASSOC)){// printf('<pre>%s</pre>',print_r($result,true));// }// foreach配合fetchALL循环$result = $stmt->fetchAll(PDO::FETCH_ASSOC);foreach($result as $value){printf('<pre>%s</pre>',print_r($value,true));}} else {print_r($stmt->errorInfo());}// echo '新增成功, id = ' . $db->lastInsertId() . '<br>';// 设置主键时候,自动增量,自动增量,自动增量要设置
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号