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綁定的時候,第一個參數都為數字,數字對應第幾個“?”

  

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM