【发布时间】:2017-10-24 09:05:43
【问题描述】:
如果我用查询运行它
"SELECT * FROM users";
它返回我的结果。但是一旦我运行这个
$username = $_POST['username'];
$password = $_POST['password'];
$login = "SELECT * FROM users WHERE name= ".$username." AND password= ".$password."";
没有。
如果我在没有变量的情况下在 Mysql 工作台中运行它。如果我运行 echo $_POST 值,它们会正确通过。 我对自己做错了什么感到困惑,请!帮我。 我还通过https://phpcodechecker.com/ 运行了我的代码,它在我的代码中看不到任何错误。 这是完整的功能。
function login($username,$password){
global $db_conn;
$conn = new mysqli($db_conn['servername'], $db_conn['username'], $db_conn['password'], $db_conn['dbname']);
$username = $_POST['username'];
$password = $_POST['password'];
$login = "SELECT * FROM users WHERE name= ".$username." AND password= ".$password."";
$login_result = $conn->query($login);
if ($login_result->num_rows > 0) {
$output = array();
while($row = $login_result->fetch_assoc()) {
$output[] = $row;
echo "".$row['name']."-".$row['password']."<br>";
}
} else {
echo "Invaild Login Details!"."<br>" ;
$conn->close();
return false;
}
}
每次显示“无效的登录详细信息!”但我知道他们是返回的一个结果。
我做错了什么?
【问题讨论】:
-
$login = "SELECT * FROM users WHERE name=
'".$username."'AND password='".$password."'";如何为变量添加单引号 -
让我现在快点试试吧:D 会马上回复你的。
-
什么是 echo $login;返回? pw 是否包含 sql 特定字符?
-
注意这些sql查询是good candidates to sql injection risk,你应该使用prepared statements
-
为什么会导致它不回显?