【发布时间】:2014-07-21 00:26:31
【问题描述】:
我真的不知道下面写的查询应该有什么问题
$username是表单通过POST方式传递,$mysqli为连接变量,代码:
$mysqli = new mysqli("127.0.0.1", "root", "", "securelogin");
function usernameCheck($username, $mysqli) {
$query = "SELECT username FROM user WHERE username = '$username'";
$stmt = $mysqli->prepare($query)
$stmt->execute();
$stmt->store_result();
if($stmt > 1) {
$stmt->close();
return FALSE;
}
}
此函数检查用户名是否已存在于数据库中
~~~~
我已经用下面的代码解决了这个函数
function usernameCheck($username, $mysqli) {
$query = "SELECT `username` FROM `user` WHERE `username` = '$username'";
$result = $mysqli->query($query);
if($result->num_rows != 0) {
return FALSE;
}
}
但是,正如您所说,SQL 注入易受攻击。我只是不明白如何将其编码为不可注射
【问题讨论】:
-
把$mysqli放在函数里面,关键字global.
global $mysqli; -
有什么问题?问题从哪一行开始?回显代码的每一行,看看问题出在哪里。