Prepared语句需要0个参数,给定1.,使用php手动示例


Prepared statement expects 0 params with 1 given .., using php manual example

我直接从php手动示例中获取了这个示例——它几乎与我所需要的完全相同,但我仍然会遇到这个错误。

有人能告诉我我缺了什么吗?

$stmt = $link->prepare("SELECT obitBody, Photo FROM tnObit WHERE obitID = ?");
if ($stmt->execute(array($_POST['obitID']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}

mysqli_stmt::execute()需要0个参数,中给出1个

execute(基于对象的,与较旧的不太受欢迎的变体相反)实际上不接受任何参数。

从您的查询和尝试的参数到execute,看起来您正试图将所需的参数作为数组传递给execute调用。事情并非如此。

在调用execute之前,您需要在单独的调用中将变量绑定到?标记。

这个问题(一旦得到公认的答案)显示了你需要遵循的一般过程:

  • create语句
  • 编制报表
  • 绑定参数
  • execute(使用参数)
  • 存储结果(如果缓冲)
  • 绑定结果变量
  • fetch(很可能在循环中)
  • 结束语