索引数组+匿名参数
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,返回的结果为关联数组,就是键(列名)=>内容
源码实例
<?php
namespace _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>';
// 设置主键时候,自动增量,自动增量,自动增量要设置