PDO中的预处理

PDO中的基本的原理和步骤和MySQL中的预处理都是一样的,只不过就是把MySQL中的预处理所有命令行的语法封装成了PDO对象的几个公开的方法而已!

1.发送预处理语句

此时,我们需要调用pdo对象的prepare方法,得到一个PDOStatement结果对象!

2.绑定参数

调用PDOStatement对象中的bindParam方法:

3.执行预处理语句

调用PDOStatement对象中的execute方法,如果执行成功,就返回true,如果执行失败就返回false!

下面是代码

<?php 

/**
* 利用PDO对象实现预处理操作
*/

echo "<meta charset=utf-8>";

//PDO类的实例化

// 1 设置数据源相关参数
$dbms = 'mysql';    //选择数据库类型
$host = 'localhost';
$port = '3306';
$dbname = 'test';
$charset = 'utf8';
$dsn = "$dbms:host=$host;port=$port;dbname=$dbname;charset=$charset";

// 2 设置用户名密码
$user = 'root';
$pwd = '';

// 3 实例化PDO类
$pdo = new PDO($dsn,$user,$pwd);

// 4 预处理
// 4.1 发送预处理
$sql = "insert into pdo values(null, ?, ?)";
$stmt = $pdo->prepare($sql);
// 4.2 绑定参数
// 先把每个参数保存到一个变量中
$name = 'qqqq';
$age = '45';
//再使用bindParam方法绑定参数变量
$stmt->bindParam(1,$name);    //1代表第一个数据占位符
$stmt->bindParam(2,$age);

// 4.3 执行预处理语句
$res = $stmt->execute();
if ($res) {
    echo "预处理语句执行成功!";
}else{
    echo "预处理语句执行失败!";
}

先查一下数据库的数据

执行上述代码之后,结果如下:

 

绑定参数的其他方法

1 使用 :变量名 作为数据占位符

// 4 预处理
// 4.1 发送预处理
$sql = "insert into pdo values(null, :name, :age)";
$stmt = $pdo->prepare($sql);
// 4.2 绑定参数
// 先把每个参数保存到一个变量中
$name = 'qqqq';
$age = '45';
//再使用bindParam方法绑定参数变量
$stmt->bindParam(':name',$name);    
$stmt->bindParam(':age',$age);

在对应位置修改为以上代码,其他代码不动

结果如下

2.使用数组绑定参数

// 4 预处理
// 4.1 发送预处理
//$sql = "insert into pdo values(null, ?, ?)";
$sql = "insert into pdo values(null, :name, :age)";
$stmt = $pdo->prepare($sql);
// 4.2 绑定参数
// 把每个参数保存到一个变量中
$name = 'qqqq';
$age = '45';
// 使用数组绑定参数
$arr = array(
    ':name'  =>  $name,
    ':age'   =>  $age 
    );

// 4.3 执行预处理语句
$res = $stmt->execute($arr);

在对应位置修改为以上代码,其他代码不动

结果如下:

上述为在PDO中使用预处理的几种方式,可以对比着上一篇“MySQL的预处理技术”记忆! 

posted @ 2017-05-06 21:44  下页、再停留  阅读(878)  评论(0编辑  收藏  举报