【发布时间】:2016-04-10 07:28:21
【问题描述】:
当我这样做时,MySQL 请求可以正常工作:
$sql1 = 'SELECT * FROM user WHERE username LIKE "test"';
但是当我使用这样的变量时,它会报错:
$username = $_POST["username"];
$sql1 = 'SELECT * FROM user WHERE username LIKE'.$username;
错误:
致命错误:在布尔值上调用成员函数
fetch_assoc()...
$username 的var_dump 给出:
string(4) "test"
感谢您的帮助!
到目前为止的完整代码:
$username = $_POST["username"];
var_dump($username);
include 'data.php';
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql1 = 'SELECT * FROM user WHERE username = "'.$username.'"';
$result1 = $conn->query($sql1);
$row1 = $result1->fetch_assoc();
echo $row1["ID"];
【问题讨论】:
-
加个空格:
" LIKE " . $value,为更多的错误和sql-ijection做准备。 -
并将 var 用引号括起来
-
在你的 sql 查询中添加一些错误报告,你的语法是无效的。此外,您应该使用参数化/准备好的查询来缓解 sql 注入漏洞
-
使用这个 $sql1 = 'SELECT * FROM user WHERE username LIKE %'.$username.'%';
标签: php mysql variables http-post