今天看了PHP防SQL注入,使用预处理prepare,可是我insert数据时,老是插不进去,可是select却能够,弄了好久终于知道原来问题在这里,先上代码php
<?php header('content-type:text/html;charset=utf8');html
//接收表单数据 mysql
//$username = $_POST['username'];sql
$conn = new mysqli('localhost','root','akagami-666','water'); post
if($conn -> connect_errno){ echo "链接失败".$conn -> connect_error; } spa
$sql = "insert into w_safe(name) values(?)"; htm
// $sql = "select * from w_safe where name=?"; mysqli
$stmt = $conn -> prepare($sql); $stmt -> bind_param("s",$username); 变量
$username = $_POST['username']; 表单
$stmt -> execute();
echo $stmt -> affected_rows;
$stmt -> close();
$conn -> close();
出问题的缘由就是,我一开始是先接收post值,定义$username变量,后执行bind_param(),而这就致使没法插入数据,
必需要先写bind_param(),在定义里面的变量才行。
但愿能帮助遇到一样问题的小伙伴!!!