使用PHP的mysqli扩展中预处理语句
mysqli_stmt预处理类(推荐你使用的类)
和mysqli和mysqli_result相比优点:
1. mysqli和mysqli_result参完成的功能,都可以使用mysqli_stmt完成
2. 效率上:高, 就是如果执行多次相同的语句,只有语句数据不同, 因为将一条语句在服务器端准备好,然后将不同的值传给服务器,再让这条语句执行
编译一次,使用多次
3. 安全上:SQL注入(? 占位) ,后期传的值不会当成SQL语句
效率高,安全,这是我们使用mysqli_stmt的原因,所以推荐你使用它
<?php
$mysqli=new mysqli("localhost", "root", "123456", "xsphpdb");
//$stmt=$mysqli->stmt_init();
//$sql="";
//$stmt->prepare($sql);
//准备好一条语句放到服务器中,插入语句
$sql="insert into shops(name, price, num, desn) values(?, ?, ?, ?)";
$sql="update shops set name=?, price=?, num=?, desn=? where id=?";
$stmt=$mysqli->prepare($sql);//比较方便
//给占位符号每个?号传值(绑定参数) i整型 d double型 s 字符串 b二进制 不知道什么类型用字符串
$stmt->bind_param("sdisi", $name, $price, $num, $desn,$id);//必须传变量,引用
$name="zhangsan1";
$price=56.781;
$num=661;
$desn="hello good1";
$id=100;
//执行
$stmt->execute();
$name="lisi1";
$price=56.781;
$num=661;
$desn="aaaaaaaa1";
$id=101;
//执行
$stmt->execute();
$name="wangwu1";
$price=56.781;
$num=961;
$desn="bbbbbbbbb1";
$id=102;
//执行
$stmt->execute();
$name="zhaoliu111";
$price=56.7811;
$num=6118;
$desn="cccccccccccc111";
$id=103;
//执行
$stmt->execute();
echo "最后ID".$stmt->insert_id."<br>";
echo "影响了".$stmt->affected_rows."行<br>";
$stmt->close();
浙公网安备 33010602011771号