我一直在使用PHP和SQL创建网站。在我的最后一个问题中,有人指出我应该使用准备好的语句来保护我的站点免受SQL注入。我一直在浏览我的网站,将所有查询都更改为准备好的语句,但是在用户注册时检查数据库中是否存在用户名时遇到问题。
这是我尝试过的代码,它不会产生任何错误,但是它允许用户使用我的users表中已经存在的用户名进行注册。
$uname = $_POST['uname'];
$stmt = $link->prepare("SELECT * FROM users WHERE username= ?");
/* Bind parameters, s - string, b - blob, i - int, etc */
$stmt -> bind_param("s", $uname);
$stmt -> execute();
/* Fetch the value */
$stmt -> fetch();
$numberofrows = $stmt->num_rows;
/* Close statement */
$stmt -> close();
if($numberofrows>0) {
echo "Username Already Exist";
} else {
//rest of my code
}
谢谢!