为什么查询在mysql中有效,prepare语句有效,而bind_param无效?

时间:2018-12-05 07:51:49

标签: php mysql

我有一个查询,例如:

$query = 'DELETE FROM foo WHERE id =' . $foo; 

这里$foo = 1

此查询在MySQL中正确执行,并且带有查询参数的prepare语句为我返回了一个对象(因此,我假设它已成功准备)。

但是当我尝试绑定它($stmt->bind_param('i', $foo))时,它为我返回false。在其他地方(几乎完全准确的查询),我的bind_param可以完美地工作。

有人可以告诉我谁可以导致此问题吗?

我的完整代码:

public function foo($foo)
{
    $query = 'DELETE FROM foo WHERE id =' . $foo; // I pass 1 here
    $stmt = $this->connection->prepare($query); // returns an object
    var_dump($stmt->bind_param('i', $foo)); // returns false
}

1 个答案:

答案 0 :(得分:5)

您需要更改查询,如下所示:-

public function foo($foo)
{
    $query = 'DELETE FROM foo WHERE id =?'; //check the change here
    $stmt = $this->connection->prepare($query); 
    $stmt->bind_param('i', $foo); 
}

参考:-

mysqli_stmt::bind_param

PDOStatement::bindParam