从PHP查询得到相同的错误结果


Getting same wrong result from query in PHP

我有一个问题,当我做我的查询我总是得到相同的结果(2),它没有得到正确的ID值:

    $query = $this->mysqli->real_escape_string("SELECT id FROM image WHERE file_name = ?");
    $stmt = $this->mysqli->prepare($query);
    $stmt->bind_param("s", $this->name);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($id);
    if($stmt->num_rows == 1)
    {
        var_dump($stmt->id);
        var_dump($id);
    }

结果总是:

$int(2)
NULL

我甚至没有那个ID值在那个表中。注意:此查询适用于phpmyadmin.

请参考如何使用mysqli:

$stmt = $this->mysqli->prepare("SELECT id FROM image WHERE file_name = ?");
$stmt->bind_param("s", $this->name);
$stmt->execute();
$stmt->bind_result($id);
$stmt->fetch();
var_dump($id);
  • 不转义整个查询
  • 你不需要store_result
  • 你需要fetch
  • 您需要将您绑定的变量var_dump,而不是$stmt->id等其他变量

您不需要对整个查询字符串使用转义函数,特别是。这是一个用于特殊情况的低级函数。

将查询直接放入prepare调用中应该可以解决这个问题。