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

  1.效率高

  2.安全性好

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

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

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

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

为什么说其安全性好呢?

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

开始一个真实案例:

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

下图为执行后的效果:

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

最新文章

  1. OpenGL新手框架
  2. bat批处理完成jdk tomcat的安装
  3. [PHP] 自动加载的实现
  4. F12调试打开时,出现很多多余内容问题解决
  5. python实现web分页日志查看
  6. 怒刷DP之 HDU 1024
  7. compress 表设置及索引设置
  8. c++ 学习笔记 c++ 引用C库注意点:#ifdef __cplusplus 倒底是什么意思?
  9. thinkphp 自定义标签
  10. 不用不知道 apply()与call()的强大
  11. WEB 3D SVG CAD 向量 几个实施
  12. Socket.io 延伸
  13. HBASE强制删除表
  14. Python学习基本小练习
  15. 洗礼灵魂,修炼python(44)--巩固篇—反射之重新认识hasattr,gettattr,setattr,delattr
  16. LeetCode83.删除排序链表中的重复的元素
  17. JAVA Collections.shuffle打乱列表
  18. ES6标准入门之数值的拓展解说
  19. xiaocong/uiautomator
  20. 7.1 Models -- Introduction

热门文章

  1. iOS:转载:同步、异步、并行、串行的详解
  2. pymongo 目标计算机积极拒绝
  3. 如何在 CentOS 7 上安装 Percona Server
  4. Swift教程之运算符
  5. UITableView Scroll to top 手动设置tableview 滚动到 顶部
  6. 安卓Camera APP
  7. dmesg 时间转换脚本
  8. loadrunner参数使用总结
  9. JavaScript经常使用代码段
  10. Mybatis准备