預處理是先提交SQL語句到服務端,執行預編譯,php
客戶端執行SQL語句時,只須要上傳輸入參數便可。html
若是涉及屢次讀取或存儲,效率高於普通SQL執行操做。mysql
1.普通SQL執行sql
1 <?php 2 header('content-type:text/html;charset=utf-8'); 3 $mysqli=new mysqli('localhost','root','','test'); 4 $mysqli->query('set names utf8'); 5 $sql="INSERT INTO users(name,money) values('張三',100)"; 6 $result=$mysqli->query($sql); 7 ?>
2.預處理(增刪改) fetch
1 <?php 2 header('content-type:text/html;charset=utf-8'); 3 $mysqli=new mysqli('localhost','root','','test'); 4 $mysqli->query('set names utf8'); 5 6 $sql="INSERT INTO users(name,money) values(?,?)"; //參數以?代替 7 $stmt=$mysqli->prepare($sql); //預處理 8 9 $name='張三'; 10 $money=100; 11 $stmt->bind_param('si',$name,$money); //綁定參數 12 $result=$stmt->execute(); 13 14 $name='李四'; 15 $money=200; 16 $stmt->bind_param('si',$name,$money); //綁定參數 17 $result=$stmt->execute(); 18 ?>
3.預處理(查詢) spa
1 <?php 2 header('content-type:text/html;charset=utf-8'); 3 $mysqli=new mysqli('localhost','root','','test'); 4 $mysqli->query('set names utf8'); 5 $sql='SELECT * FROM users WHERE id>?'; //參數以?代替 6 $stmt=$mysqli->prepare($sql); //預處理 7 $id=1; 8 $stmt->bind_param('i',$id); //綁定參數 9 $stmt->bind_result($id,$name,$money); //查詢須要綁定結果集 [必須綁定全部字段] 10 $stmt->execute(); //執行sql語句 11 //取出結果集 12 while($stmt->fetch()){ 13 $data[]=[ 14 'id'=>$id, 15 'name'=>$name, 16 'monry'=>$money 17 ]; 18 } 19 var_dump($data); 20 21 ?>