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的预处理技术”记忆!

时间: 2024-11-05 06:26:37

PDO中的预处理的相关文章

PDO中获取结果集

fetch()方法 fetch()方法用于获取结果集的下一行,语法如下: mixed PDOStatement::fetch([int fetch_style][,int cursor_orientation[,int cursor_offset]]]) 参数fetch_style控制结果集的返回方式 PDO::FETCH_ASSOC -- 关联数组形式 PDO::FETCH_NUM -- 数字索引数组形式 PDO::FETCH_BOTH -- 两者数组形式都有,这是缺省的 PDO::FETCH

PDO中执行SQL语句

exec()方法 exec()方法返回执行后受影响行数,语法如下: int PDO::exec(string statement) 参数statement是要执行的SQL语句.该方法返回执行查询时受影响的行数,通常情况下用于INSERT,DELETE和UPDATE语句中. 例如: $dbms='mysql';//数据库类型 $dbName='admin';//使用的数据库 $user='root';//数据库连接用户名 $pwd='password';//数据库连接密码 $host='local

PDO中执行SQL语句的三种方法

在PDO中,我们可以使用三种方式来执行SQL语句,分别是 exec()方法,query方法,以及预处理语句prepare()和execute()方法~大理石构件来图加工 在上一篇文章<使用PDO构造函数连接数据库及DSN详解>中,我们介绍了如何使用构造函数连接数据库和DSN的详解,那么我们这篇文章跟大家介绍在PDO中执行SQL语句的三种方式,下面我们将一一介绍! 第一种方法:exec()方法 exec()方法返回执行SQL 语句后受影响的行数,其语法格式如下: 1 int PDO::exec(

VS中添加预处理宏的方法

VS中添加预处理宏的方法 除了在.c及.h中添加宏定义之外,还可以采用如下方法添加宏定义: 1.若只需要定义一个宏(如#define DEBUG),可以右键点击工程-->属性-->c/c++-->预处理器-->预处理器定义,点击下拉框中的编辑,输入想要定义的宏: 2.如果还需要定义宏的内容(如#define inline __inline),可以右键点击工程-->属性-->c/c++-->命令行,在其它选项中输入如下内容: /D"inline"

C语言中的预处理指令和递归

C语言中的预处理指令和递归 上个月就完成了黑马程序员的IOS基础视频教程,还记得刚开始学的时候,什么都不懂,现在学完基础感觉真的很不错! 每天都在期待着去黑马,憧憬着以后的生活.去黑马的路越来越接近了,我真的好兴奋!这些天一直在复习,感觉C语言中的预处理指令和递归都忘得差不多了. 预处理指令:是在编译器把代码编译成0跟1之前就会执行的一些指令.所有的预处理指令都是以#开头的. 预处理指令分为三种: 1.宏定义 用法--如:#define MYINT  int   表示把右边的int 在本代码以下

C++中的预处理宏

C++中的预处理宏 一个预处理宏的例子: # define PRINT(STR,VAR) cout<<STR “ = “<<VAR<<endl; 跟在宏名后面的括号中的参数会被闭括号后面的所有代码替代.只要在调用宏的地方,预处理程序就删除名字PRINT并替换代码,所以使用宏名时编译器不会报告任何错误信息,它并不对参数做任何类型检查. 另一个例子: # define P(EX) cout<<#EX<< “:”<<EX<<en

pdo中bindParam()与bindValue的区别

2012-07-03  ConfiJin  文章来源  阅 2491  转 2 转藏到我的图书馆 微信分享: php pdo中bindParam() 和 bindValue()方法的区别 方法 bindParam() 和 bindValue() 非常相似.唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值. 所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值. 01 $stm = $pdo->prepare("select

PDO中的事务处理

基本原理和步骤其实都是一样的(可参看上一篇"MySQL的事务处理"),PDO中的事务处理就是调用PDO对象的三个方法: 开启事务:beginTransaction 回滚操作:rollBack 执行操作:commit 事务处理最典型的就是借还钱.下面以张三向李四还1000元为例 首先看一下数据库中各自的钱数 下面是利用PDO处理还钱事务的代码: <?php /** * 利用PDO对象实现事物操作 */ echo "<meta charset=utf-8>&qu

C语言中的预处理命令

预处理功能是C语言的重要功能. 问:为什么要预处理,什么是预处理? 答:我们知道高级语言的运行过程是通过编译程序(编译器)把源代码翻译成机器语言,实现运行的.编译程序的工作包含:语法分析.词法分析.代码生成.代码优化等.但是在正式编译之前还有一些工作要做,例如:去掉注释.变换格式之类的.C语言允许在源程序中包含预处理命令,正式编译(词法分析)前,先对这些命令进行"预处理":然后在进行通常的编译处理.预处理命令从语法上讲不是C语言的一部分,但扩展了C语言程序设计的环境,简化程序开发过程: