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 "预处理语句执行失败!";
}

先查一下数据库的数据

PDO中的预处理-LMLPHP

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

PDO中的预处理-LMLPHP

PDO中的预处理-LMLPHP

绑定参数的其他方法

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);

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

结果如下

PDO中的预处理-LMLPHP

PDO中的预处理-LMLPHP

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中的预处理-LMLPHP

PDO中的预处理-LMLPHP

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

05-11 15:24
查看更多