• php -- PDO预处理


      

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

    预处理语句中为变量

    使用数组指定预处理变量

      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绑定的时候,第一个参数都为数字,数字对应第几个“?”

      

      

      

  • 相关阅读:
    selenium.环境搭建
    python.Pycham自动添加作者、时间等信息
    selenium.获取元素属性的方法(get_attribute )
    python.UnitTest框架(用例执行、结果断言、HTML报告)
    $F()函数 prototype.js
    基于索引的SQL语句优化和导入导出Oracle表
    C#,多线程死锁很容易哦
    .net 绘图控件Netron 3
    .net中的ReaderWriterLock
    在.net 2.0程序中比较XML
  • 原文地址:https://www.cnblogs.com/hf8051/p/4670803.html
Copyright © 2020-2023  润新知