MySqli预处理
Posted t-young1201
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySqli预处理相关的知识,希望对你有一定的参考价值。
预处理是先提交SQL语句到服务端,执行预编译,
客户端执行SQL语句时,只需要上传输入参数即可。
如果涉及多次读取或存储,效率高于普通SQL执行操作。
1.普通SQL执行
<?php header(‘content-type:text/html;charset=utf-8‘); $mysqli=new mysqli(‘localhost‘,‘root‘,‘‘,‘test‘); $mysqli->query(‘set names utf8‘); $sql="INSERT INTO users(name,money) values(‘张三‘,100)"; $result=$mysqli->query($sql);
?>
2.预处理(增删改)
<?php header(‘content-type:text/html;charset=utf-8‘); $mysqli=new mysqli(‘localhost‘,‘root‘,‘‘,‘test‘); $mysqli->query(‘set names utf8‘); $sql="INSERT INTO users(name,money) values(?,?)"; //参数以?代替 $stmt=$mysqli->prepare($sql); //预处理 $name=‘张三‘; $money=100; $stmt->bind_param(‘si‘,$name,$money); //绑定参数 $result=$stmt->execute(); $name=‘李四‘; $money=200; $stmt->bind_param(‘si‘,$name,$money); //绑定参数 $result=$stmt->execute(); ?>
3.预处理(查询)
<?php header(‘content-type:text/html;charset=utf-8‘); $mysqli=new mysqli(‘localhost‘,‘root‘,‘‘,‘test‘); $mysqli->query(‘set names utf8‘); $sql=‘SELECT * FROM users WHERE id>?‘; //参数以?代替 $stmt=$mysqli->prepare($sql); //预处理 $id=1; $stmt->bind_param(‘i‘,$id); //绑定参数 $stmt->bind_result($id,$name,$money); //查询需要绑定结果集 [必须绑定所有字段] $stmt->execute(); //执行sql语句 //取出结果集 while($stmt->fetch()){ $data[]=[ ‘id‘=>$id, ‘name‘=>$name, ‘monry‘=>$money ]; } var_dump($data); ?>
以上是关于MySqli预处理的主要内容,如果未能解决你的问题,请参考以下文章
报错提示:mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in..的处理方式