可以使用多种方式实现预处理:指的是在绑定数据进行执行的时候,可以有多种方式。

预处理语句中为变量

使用数组指定预处理变量

  1、准备预处理语句(发送给服务器,让服务器准备预处理语句)

  PDOStatement PDO::prepare:类似exec将一条SQL语句发送给Mysql服务器  

    //PDO::prepare 能够自动的准备一个预处理语句,用户需要准备的只是预处理所要执行的语句
    //需求:往学生表里循环插入10条记录
    //PDO的预处理能够自动的将对应的以:开始的变量给记录下来,实际发送给服务器的是“?”
    $sql1 = "insert into pro_student values(null,:s_name,:s_num,:s_gender,:s_age,:c_id)";

  2、发送预处理语句

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

  3、给预处理绑定数据

    $arr = array(
      ':s_name' => '房祖名',
      ':s_num' => 'itcast0013',
      ':s_gender' => 0,
      ':s_age' => 28,
      ':c_id' => 2
    );

  4、执行预处理:将要操作的数据发送给预处理语句,再执行预处理语句

    PDOStatement::execute([$array]):数组用来传递对应的参数

    $stmt->execute($arr); //执行预处理

  

通过绑定变量

  bindParam

    bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )

    在执行预处理之前,将之前预处理语句所指定的变量进行赋值

    只能通过变量的形式进行赋值(引用传值)

  

  bindValue

    bool PDOStatement::bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )

    执行与bindParam一样

    在执行预处理之前,将之前预处理语句所指定的变量进行赋值,或者直接将值作为参数进行绑定  

      $stmt->bindValue(':s_name','张三');
      $stmt->bindValue(':s_num','itcast0015');
      $stmt->bindValue(':s_gender',0);
      $stmt->bindValue(':s_age',30);
      $stmt->bindValue(':c_id',3);

  bindParam与bindValue的区别

    1、bindParam必须要先声明变量,再使用变量;bindValue可以直接使用值

    2、bindValue是一次性的(因为是值传递,若变量值改变了,则需要重新绑定bindValue),而bindParam可以无限使用(因为使用的引用传值,一旦变量的值进行改变,那么对应的组织SQL语句时所用到的变量的值也跟着改变)

预处理语句中为?

使用数组指定预处理变量

  

通过绑定变量

  此时,bindParam和bindValue绑定的时候,第一个参数都为数字,数字对应第几个“?”

  

  

  

php -- PDO预处理的更多相关文章

  1. MySQL pdo预处理能防止sql注入的原因

    MySQL pdo预处理能防止sql注入的原因: 1.先看预处理的语法 $pdo->prepare('select * from biao1 where id=:id'); $pdo->e ...

  2. pdo 预处理

      <?php /* * pdo 预处理sql */ $dsn = "mysql:dbname=0328;host=localhost"; $username = " ...

  3. 2017-07-25 PDO预处理以及防止sql注入

    首先来看下不做任何处理的php登录,首先是HTML页面代码 <html> <head><title>用户登录</title></head> ...

  4. 前端学PHP之PDO预处理语句

    × 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...

  5. PDO预处理

    方法:bool PDOStatement::execute ([ array $input_parameters ] ) 1.PDOStatement::execute不使用参数 01)单个绑定值(P ...

  6. php pdo预处理语句与存储过程

    很多更成熟的数据库都支持预处理语句的概念.什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制.预处理语句可以带来两大好处: 1.查询仅需解析(或预处理) ...

  7. PHP基础知识之————PDO预处理语句

    转载处:http://www.cnblogs.com/xiaohuochai/p/6133353.html 定义 在生成网页时,许多PHP脚本通常都会执行除参数之外,其他部分完全相同的查询语句,针对这 ...

  8. PDO预处理语句规避SQL注入攻击

    所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存 ...

  9. PDO预处理语句

    1.造PDO对象$dsn = "mysql:dbname=mydb;host=localhost";$pdo = new PDO($dsn,"root",&qu ...

  10. PHP PDO 预处理语句与存储过程

    很多更成熟的数据库都支持预处理语句的概念. 什么是预处理语句?可以把它看作是想要运行的 SQL 的一种编译过的模板,它可以使用变量参数进行定制.预处理语句可以带来两大好处: 查询仅需解析(或预处理)一 ...

随机推荐

  1. Java注解与自己定义注解处理器

    动机 近期在看ButterKnife源代码的时候.竟然发现有一个类叫做AbstractProcessor,并且ButterKnife的View绑定不是依靠反射来实现的,而是使用了编译时的注解,自己主动 ...

  2. Openerp 中打开 URL 的三种 方法

    来自:http://shine-it.net/index.php/topic,8013.0.html 最近总结了,Openerp 中打开 URL 的三种 方法: 一.在form view 添加 < ...

  3. Android Exception 5(startActivityForResult & singleTask)

    昨天碰到一个很诧异的事情,主要内容是1.startActivityForResult(intent2, 302);2.onActivityResult 问题是:onActivityResult调用时间 ...

  4. Android传感器开发

    2013-07-02 Android 中传感器的种类 加速度,Sensor.TYPE_ACCELEROMETER 陀螺仪,Sensor.TYPE_GYROSCOPE 亮度,Sensor.TYPE_LI ...

  5. 【翻译】Android多线程下安全访问数据库

    为了记录如何线程安全地访问你的Android数据库实例,我写下了这篇小小札记.文章中引用的项目代码请点击这里       假设你已编写了自己的 SQLiteOpenHelper. publicclas ...

  6. Php开发工具:PhpStorm=webstorm+php+db/SQL

    下载地址:https://www.jetbrains.com/zh/phpstorm/specials/phpstorm/phpstorm.html?utm_source=baidu&utm_ ...

  7. 摘:SQL Server数据类型的25种

    我们大家都知道数据类弄是数据的一种基本属性,其主要是表示数据在实际操作中所表示信息的类型.任何一种计算机语言都定义了自己的数据类型. 当然,不同的程序语言都具有不同的特点,所定义的SQL Server ...

  8. Spring4.* 中整合 Hibernate

    1. Spring 整合 Hibernate 整合什么 ? 1). 有 IOC 容器来管理 Hibernate 的 SessionFactory2). 让 Hibernate 使用上 Spring 的 ...

  9. 使用多字节字符集的跨平台(PC、Android、IOS、WP)编码/解码方法

    随着移动端的发展,跨平台已成为通讯架构设计的重要考虑因素,PC.Android.IOS.WP等跨多平台间的数据通讯,必然要解决字符编码/解码的问题. 多字节字符集MBCS不是跨平台的首选字符集,面向跨 ...

  10. 温故而知新 chrome 浏览器一些小技巧、小细节

    1.console 模块如何换行? shift + enter即可. 2.有时候 network 没有分类标签(xhr.img.js.css)怎么办? 按下这个图标就可以显示出来了