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的预处理技术”记忆!
PDO中的预处理的更多相关文章
- PDO中获取结果集
fetch()方法 fetch()方法用于获取结果集的下一行.语法例如以下: mixed PDOStatement::fetch([int fetch_style][,int cursor_orien ...
- C#中的预处理指令
C#中的预处理指令 作为预处理中的一对:#region name ,#endregion可能是大家使用得最多的,我也常用它来进行代码分块,在一个比较长的cs文件中,这么做确实是一件可以让你使代码更清晰 ...
- C#中的预处理指令详解
这篇文章主要介绍了C#中的预处理指令详解,本文讲解了#define 和 #undef.#if.#elif.#else和#endif.#warning和#error.#region和#endregion ...
- PDO中的事务处理
基本原理和步骤其实都是一样的(可参看上一篇“MySQL的事务处理”),PDO中的事务处理就是调用PDO对象的三个方法: 开启事务:beginTransaction 回滚操作:rollBack 执行操作 ...
- VS中添加预处理宏的方法
VS中添加预处理宏的方法 除了在.c及.h中添加宏定义之外,还可以采用如下方法添加宏定义: 1.若只需要定义一个宏(如#define DEBUG),可以右键点击工程-->属性-->c/c+ ...
- C语言中的预处理命令
预处理功能是C语言的重要功能. 问:为什么要预处理,什么是预处理? 答:我们知道高级语言的运行过程是通过编译程序(编译器)把源代码翻译成机器语言,实现运行的.编译程序的工作包含:语法分析.词法分析.代 ...
- C 语言中的预处理
C 语言中以 # 开头的就是预处理指令,例如 #include . 预处理指令的用途 所有的预处理指令都会在 GCC 编译过程的预处理步骤解析执行,替换为对应的内容.在下一步编译过程中,看不到任何预处 ...
- 学习PDO中的错误与错误处理模式
在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...
- [PHP]PDO占位符预处理在 IN 和 LIKE 中用法
两点注意项: 1. 占位符 (?) 必须被用在整个值的位置,不需要引号等其它字符. 2. 参数按数组元素顺序依次传递给占位符. <?php /** * PDO基于占位符的查询预处理 * * @l ...
随机推荐
- IE6下javascript:void(0)不可用的解决
<a href="javascript:void(0)" class="inp_sear_a" onclick="doSubmit();&quo ...
- powerDesigner 把name项添加到注释(comment)
第一次写博客,分享一点经验吧,平时大家用powerDesigner的时候,pd是不会把name项默认添加到comment的,所以生成的数据库表里面也没有中文字段的注释. 我在网上查了一下.有解决方案了 ...
- a 便签实现 下载
如果想通过纯前端技术实现文件下载,直接把a标签的href属性设置为文件路径即可,如下: <a href="https://cdn.shopify.com/s/files/1/1545/ ...
- JS获取浏览器URL中查询字符串的参数
首先要知道Location这个对象以及这个对象中的一些属性: href:设置或返回完整的url.如本博客首页返回http://www.cnblogs.com/wymninja/ host:设置或返回主 ...
- css经典布局—Sticky footers布局
参考:http://www.w3cplus.com/CSS3/css-secrets/sticky-footers.html 效果:将footer固定到底部.文章内容不足满屏时 footer在底部,超 ...
- c++中double类型控制小数位数
有时,我们需要输出确定小数位数的double,可以先引入如下头文件: #include <iomanip> 然后通过下列方式输出: double zzz = 8.66666; cout & ...
- tomcat 最大并发数
只针对BIO模式,目标请求会sleep两秒再返回结果,通过jmeter测试工具进行并发测试 操作系统:windows && linux tomcat7测试: <Connector ...
- error C4996: 'scanf': This function or variable may be unsafe.
项目属性-配置属性-c/c++-预处理器- 在下面的编辑窗口中添加一句命令:_CRT_SECURE_NO_WARNINGS 添加完成后应用并退出 http://jingyan.baidu.com/al ...
- VMware虚拟机克隆Linux(CentOS)系统后找不到eth0网卡的问题(图文详解)
问题现象: 有时候,会使用VMware虚拟机的的克隆功能,快速的复制已安装好的Linux系统. 可是克隆完之后,会发现没有eth0网卡. 解决办法: 1.编辑/etc/udev/rules.d/70 ...
- jdk8-lambda-stream的使用
1, 认识stream(声明式编程) Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator, 原始版本的Iterator,用户只能一个一 ...