为什么查询在mysql中工作,prepare语句工作正常,但bind_param不是?

HEL*_*PME 0 php mysql

我有一个查询:

$query = 'DELETE FROM foo WHERE id =' . $foo; 
Run Code Online (Sandbox Code Playgroud)

这里 $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
}
Run Code Online (Sandbox Code Playgroud)

Ana*_*Die 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); 
}
Run Code Online (Sandbox Code Playgroud)

参考:-

mysqli_stmt :: bind_param

PDOStatement对象:: bindParam