预处理语句有以下两个特点:

  1.效率高

  2.安全性好

为什么说预处理语句效率高呢?

  预处理语句就好比一个模板,比如下面的一串插入语句:

  1. insert into admin(id,username,password) values(?,?,?);

问号表示不固定的值,我们只需要输入值然后批量执行模板即可。

为什么说其安全性好呢?

  因为其已经生成一个模板了,已经编译好了(PS:还没有执行)所以纵使黑客执行sql攻击命令也是无效的。因为已经编译了,输入再多的恶意sql语句也是徒劳。

开始一个真实案例:

  1. <?php
  2. try{
  3. $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root","");
  4. }catch(PDOException $e){
  5. echo $e->getmessage();
  6. }
  7. $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,0);
  8. echo "PDO对象创建成功.<br />";
  9.  
  10. try{
  11.  
  12. $sql = $pdo ->prepare("insert into users(gold,user,password) values(?,?,?)");//准备一条sql语句。prepare英译为预备。但未执行。
  13. //我们需要将三个问号分别绑定参数。
  14. $sql ->bindparam(1,$gold);//bind英译为绑定,param译参数。
  15. $sql ->bindparam(2,$user);
  16. $sql ->bindparam(3,$password);
  17.  
  18. $gold = 9;
  19. $user = 'user';
  20. $password = 'awdohaw';
  21. $sql -> execute();//需要再插入那么直接再复制18行到20行代码即可。
  22.  
  23. $gold = 10;
  24. $user = 'hacker-def';
  25. $password = 'while';
  26. $sql -> execute();//execute即执行该条sql命令。
  27.  
  28. }catch(PDOException $e){
  29. echo $e->getmessage();
  30. exit;
  31. }
  32. echo "成功执行sql语句.<br />";
  33. $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,1);
  34. ?>

下图为执行后的效果:

如果我们要插入更多的自然都是没有问题的。所以效率上面会好的很多。sqli也有预处理功能但是麻烦的多。

跟着百度学PHP[14]-PDO的预处理语句1的更多相关文章

  1. 跟着百度学PHP[14]-PDO的预处理语句2

    在$sql = $pdo -> prepare("insert into users(gold,user,password) values(?,?,?)"):条语句我们不仅仅 ...

  2. 跟着百度学PHP[14]-PDO之Mysql的事务处理2

    前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了. 将自动提交关闭. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT 将其设置为0即可关闭,如:$pd ...

  3. 跟着百度学PHP[14]-PDO的错误处理模式&PDO执行SQL

    我们在使用PDO去执行sql语句的时候并不会报错.如下案例所示: <?php try { //$pdo = new pdo("mysql:host=主机;port=端口;dbname= ...

  4. 跟着百度学PHP[14]-PDO之Mysql的事务处理1

    事务处理:在实际案例当中干一件事的mysql语句(好比转账,小一同学转账100,小二同学收账,在mysql当中小一就要减去转账的钱,小二就要增加100快)倘若该语句执行过程中有任何一条的sql语句出错 ...

  5. 跟着百度学PHP[14]-初识PDO数据库抽象层

    目录: 00x1 php中的pdo是什么? 00x2 pdo创建一个PDO对象 00x1 php中的pdo是什么? 就是操作数据库的方法,pdo就是把操作数据库的函数封装成一个pdo类,其间做了安全验 ...

  6. 跟着百度学PHP[14]-COOKIE的应用/网站登陆案例完整案例

    先在数据库当中创建以下数据: mysql> create table user( -> id int not null auto_increment, ) not null default ...

  7. 跟着百度学PHP[14]-PDO-优化驱动

    使用方法设置预定义变量 PDO的方法/属性 PDO::beginTransaction — Initiates a transaction PDO::commit — Commits a transa ...

  8. PDO prepare预处理语句

    预处理语句 $dsn="mysql:host=localhost;dbname=emp"; try{ $pdo=new PDO($dsn,'root','root'); }catc ...

  9. 跟着百度学PHP[17]-复习PDO的几个关键词

    主要就是复习一下几个关键词.发现太久没有写又忘了.惭愧. final self static const

随机推荐

  1. String格式化参数整理

    Java String格式话参数整理如下: conversion:转换格式,可选的格式有: d 整数型(十进制) c Unicode字符 b Boolean值 s String f 浮点数(十进制) ...

  2. mysql重置密码和mysql error 1044(42000)错误

    #mysql错误:(密码不正确,需要重置密码) ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor ...

  3. 流畅的python第十二章继承的优缺点学习记录

    子类化内置类型的缺点 多重集成和方法解析顺序 tkinter

  4. 会声会影X10 64位整合光盘V10.1.0.14简体中文版 下载

    http://xiazai.huishenghuiying.com.cn/wm/huishenghuiyingx10_64bit_wmqm.exe

  5. 怎样在model里面使用number_to_currency

    ActiveSupport::NumberHelper.number_to_currency(amount, precision: 0)

  6. IIS 之 Asp.Net项目内部运行详解

    我们都知道,当用户在浏览器地址栏中输入网址时,该请求会被IIS服务器捕获,如果是请求的是静态页面则由IIS本身处理并直接返回客户端:如果是动态页(*.aspx),通过一系列的前期的处理来到 .NET ...

  7. ORA-12519, TNS:no appropriate service handler found(数据库上当前的连接数目已经超过最大值)

    报错: ORA-12519, TNS:no appropriate service handler foundThe Connection descriptor used by the client ...

  8. OpenCV中的矩阵和图像类型

    任务刚刚做完,就迫不及待的来写写在OpenCV中常见的几类数据类型: 在使用OpenCV时我们时常会碰到IplImage这个数据类型,IplImage就是我们通常说的“图像”进行编码的基本结构,这些图 ...

  9. 【Firefly API文档】—— Package DBentrust

    http://bbs.gameres.com/thread_219653_1_1.html package dbentrust 该包下面主要是数据库的处理与memcached存储.里面封装了,从mem ...

  10. 《暗黑世界V1.4》API说明文档

    <暗黑世界V1.4>API说明文档 阵法位置示意图 上方:                        下方:      账号注册   100 请求信息 { username   str ...