预处理的好处?

效率要提高 安全性更好 建议:使用这种方式去执行Sql语句

PDO预处理删除、更新、添加语句:

//只是将这个语句放在数据库中编译后等待,没有执行
$stmt=$pdo->prepare(“insert into px_shopscore(pid,score)values(?,?)”);//

为问号参数

$stmt=$pdo->prepare(“insert into px_shopscore(pid,score)values(:pid,:score)”);//

为字符串参数,冒号是必须的

//绑定参数将问号或字符串与变量进行绑定

$stmt->bindParam(1,$pid);
$stmt->bindParam(2,$score);

方式2

//绑定参数:为可选参数

$stmt->bindParam(“:pid”,$pid);
$stmt->bindParam(“:score”,$score);

//执行上面的数据库语句,执行语句之前给变量赋值

$pid=2;
$score=3;

//简化操作execute()中传入数组(关联数组或者索引数组),对应字符串参数和?参数
$stmt->execute();

PDO预处理查询语句:

$stmt=$pdo->prepare(“select * from px_shopscore”);

$stmt->execute();

//设置结果的模式,以下的代码都使用fetch()或fetchAll都是用这个模式

$stmt->setFetchMode(_PDO::FETCHNUM);

//获取单条语句

while($row=$stmt->fetch()){

print_r($row);

}

fetch传值可以获取索引关联数组




 

* _PDO::FETCHASSOC:返回一个索引为结果集列名的数组
  • _PDO::FETCHBOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组
  • _PDO::FETCHNUM:返回一个索引为以0开始的结果集列号的数组


fetchAll()获取整张表的数据(生成二维数组)

//绑定栏目(同bindParam)

$stmt->bindColumn(1,$pid);

$stmt->bindColumn(2,$score);

返回受上一个 SQL 语句影响的行数




PDOStatement::rowCount返回受上一个 SQL 语句影响的行数

$stmt->rowCount();

获取增加id

PDO::lastInsertId;