预处理是先提交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 ?>