什么是预处理语句?

可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制。

预处理语句可以带来两大好处:

查询仅需解析(或预处理)一次,但可以用相同或不同的参数执行多次。当查询准备好后,数据库将分析、编译和优化执行该查询的计划。对于复杂的查询,此过程要花费较长的时间,如果需要以不同参数多次重复相同的查询,那么该过程将大大降低应用程序的速度。通过使用预处理语句,可以避免重复分析/编译/优化周期。简言之,预处理语句占用更少的资源,因而运行得更快。

提供给预处理语句的参数不需要用引号括起来,驱动程序会自动处理。如果应用程序只使用预处理语句,可以确保不会发生SQL 注入。(然而,如果查询的其他部分是由未转义的输入来构建的,则仍存在 SQL 注入的风险)。

预处理语句如此有用,以至于它们唯一的特性是在驱动程序不支持的时PDO 将模拟处理。这样可以确保不管数据库是否具有这样的功能,都可以确保应用程序可以用相同的数据访问模式。

php pdo预处理语句之查询

$dns = 'mysql:host=数据库地址;dbname=数据库名称';

$username = '数据库帐号';

$password = '数据库密码';

// 1.连接数据库,创建PDO对象

$pdo = new PDO($dns,$username,$password);

// 2.准备SQL语句,创建预处理对象

$sql = "SQL语句";

$stmt = $pdo->prepare($sql);

// 3. 执行SQL语句

$stmt->execute();

// 4. bindColumn()将结果集中的列绑定到指定变量上

// 注意与bindParam()的区别

$stmt->bindColumn('id', $id, PDO::PARAM_INT);

$stmt->bindColumn('name', $name, PDO::PARAM_STR, 15);

$stmt->bindColumn('position', $position, PDO::PARAM_STR, 20);

// PDO::FETCH_BOUND: 指定获取方式,将结果集的列绑定到指定变量(可选)

while ($stmt->fetch(PDO::FETCH_BOUND)) {

echo 'id=' . $id . ', name=' . $name . ', position='. $position ; }

// 5. 关闭连接,如果不断开,系统也会自动切断

$pdo = null;

php pdo预处理语句之插入数据

$dns = 'mysql:host=数据库地址;dbname=数据库名称';

$username = '数据库帐号';

$password = '数据库密码';

// 1.连接数据库,创建PDO对象

$pdo = new PDO($dns,$username,$password);

// 2.准备SQL语句,创建预处理对象

$sql = "INSERT INTO `staff` (name,age,sex,position,mobile,hiredate) VALUES (:name,:age,:sex,:position,:mobile,:hiredate)";

$stmt = $pdo->prepare($sql);

// 3.绑定参数到指定的变量名

$stmt->bindParam(':name', $name);

$stmt->bindParam(':age', $age);

$stmt->bindParam(':sex', $sex);

$stmt->bindParam(':position', $position);

$stmt->bindParam(':mobile', $mobile);

$stmt->bindParam(':hiredate', $hiredate);

// 4.插入一行数据

$name ='天勤猿';

$age ='22';

$sex ='1';

$position ='程序猿';

$mobile ='188888888';

$hiredate ='1548999267';

// 5. 执行SQL语句

$stmt->execute();

// 6. 关闭连接,如果不断开,系统也会自动切断

$pdo = null;

天勤 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:php pdo预处理

php pdo 关闭,php pdo预处理相关推荐

  1. php pdo 参数绑定,PDO预处理之参数绑定和列绑定

    摘要:PDO查询中,2个绑定操作:参数绑定与列绑定:参数绑定:bindParm() 和 bindValue();bindParm(':占位符',变量,类型常量) 类型常量默认为字符串bindValue ...

  2. PHP中PDO关闭连接的问题

    PHP中PDO关闭连接的问题 在之前我们手写 mysql 的连接操作时,一般都会使用 mysql_close() 来进行关闭数据库连接的操作.不过在现代化的开发中,一般使用框架都会让我们忽视了底层的这 ...

  3. php封装pdo实例以及pdo长连接的优缺点

    文章目录 一.前言 二.为什么选择pdo 三.pdo的长连接 1.什么是pdo的长连接 2.长连接对nginx无效吗 3.php-fpm下的长连接测试 4.长连接对事务的影响 5.总结 四.pdo部分 ...

  4. php5.5 pdo mysql_PHP5中PDO的简单使用

    PDO(PHP Data Object) 是PHP 5新出来的东西,在PHP 6都要出来的时候,PHP 6只默认使用PDO来处理数据库,将把所有的数据库扩展移到了PECL,那么默认就是没有了我们喜爱的 ...

  5. php中的PDO对象---对PDO对象的认识、什么是PDO对象

    注:本报告总结完全由本人编著,部分概念内容由网络摘录 1 对PDO对象的认识 1.1 简介 PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据 ...

  6. php pdo 封装类,php pdo封装类代码(支持事务)

    /** * PDO数据库 * @copyright By GOOGLE */ class pdo_db { /** * PDO实例 * @var PDO */ protected $_db; /** ...

  7. PDO::fetchAll 与 PDO::fetch 循环

    只是一个快速的问题. 在循环中使用 PDO::fetchAll() 和 PDO::fetch() 之间是否存在性能差异(对于大型结果集)? 我正在获取用户定义类的对象,如果这有什么不同的话. 我最初未 ...

  8. php pdo 查询语句,PDO:预处理语句(参数化查询)

    @(PDO(PHP data object/PHP数据对象))[PDO|预处理语句|参数化查询] The database library called PHP Data Objects or PDO ...

  9. 夺命雷公狗---PDO NO:13 PDO的预处理查询4

    <?php header("Content-Type:text/html;charset=utf-8″); try{$pdo = new PDO("mysql:host=lo ...

最新文章

  1. 从易于扩展扩展的角度来设计FizzBuzzWhizz
  2. 机器学习 LR中的参数迭代公式推导——极大似然和梯度下降
  3. Makefile中的变量和shell变量
  4. 浅析工业级物联网项目的快速开发
  5. 【大数据教程】MapReduce基本架构、统计文件中每个字符出现的次数,IP去重、计算每个人的最高分,总分
  6. 如何导出已安装的安卓app为apk包
  7. C#中的for,while和do-while循环语句
  8. python两个时间点比较大小_python中如何比较两个时间点
  9. 分析ARP***与欺骗
  10. 安装mariadb---通用二进制格式安装
  11. java:IO流学习小结
  12. 初识STM32之选型
  13. 2021计算机考研408真题和答案(回忆版)
  14. 伊诺伊香槟分校计算机世界排名,2020年伊利诺伊大学香槟分校QS世界排名
  15. OA(二)编写基本的CURD
  16. U盘制作ubuntu18.04.6系统安装盘
  17. 动态规划算法——最长公共子序列求法
  18. html特效代码 枫叶,jQuery飘落的枫叶
  19. python xlrd模块_新手菜鸟Linux学习之路
  20. 简单两步搞定小米路由新增功能-DDNS

热门文章

  1. 开发个好的RTMP播放器到底难在哪里?RTMP播放器对标和考察指标
  2. html怎么保存曲奇,自制曲奇饼能保存多久 这些存放方法你懂吗
  3. linux怎么查看sklearn版本,Sklearn——Sklearn的介绍与安装
  4. codesys com库_CODESYS在线库,酷德网镜像站启用
  5. 价值50万年薪的Java面试题
  6. Java面试宝典————基础篇
  7. java中servlet知识_jsp_Servlet常用知识总结
  8. linux 内核重定位,Linux 内核学习笔记:预备知识之“目标文件”
  9. oracle数据库连接满了,ORACLE数据库连接数满的分析及优化
  10. c++ 命名空间的using声明