【问题标题】:PHP MySQL Request not working when using a variable使用变量时PHP MySQL请求不起作用
【发布时间】: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


【解决方案1】:

因为你的代码不正确:-> 使用这个.... $sql1 = 'SELECT * FROM user WHERE username LIKE"'.$username.'"';

【讨论】:

  • 仍然无效,喜欢和用户名之间缺少空格
  • 这解决了错误问题,但不会从数据库返回数据集..
  • 因为你没有添加 $res = mysql_query($sql) 吗?
  • 在使用 $row = mysql_fetch_assoc($res) 获取数组之后
  • $sql1 = 'SELECT * FROM user WHERE username = "'.$username.'"'; $result1 = $conn->查询($sql1); $row1 = $result1->fetch_assoc();
【解决方案2】:

感谢拉赫维尔库马尔!我用了两次变量名,也有一些语法错误..

更改了 $username,现在可以使用了..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多