【发布时间】:2012-01-21 19:58:14
【问题描述】:
我正在尝试如下准备语句:
$stmt = $mysqli->prepare("SELECT COUNT(*) FROM table WHERE from = '?' && to = '?' LIMIT 1");
$stmt->bind_param('ii', $fromId, $toId);
$stmt->execute();
$stmt->bind_result($db_offeredAlready);
$stmt->fetch();
$stmt->close();
我收到以下错误:
Fatal error: Call to a member function bind_param() on a non-object in /path/to/script.php on line 97
添加 ` 和 ' 给我
$stmt = $mysqli->prepare("SELECT COUNT(*) FROM `table` WHERE `from` = '?' && `to` = '?' LIMIT 1");
还有以下
Warning: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: Number of variables doesn't match number of parameters in prepared statement in /path/to/script.php on line 97
显然 BIND 变量的数量与 ?分数。我尝试了添加和删除 ` 和 ' 的所有组合,但无济于事。这个准备好的声明有什么问题?我可以在一个条件下执行 SELECT,但它会抱怨多个条件。
【问题讨论】:
-
对于第一个示例,您不能有一个名为“from”的列,因为 mysql 将其解释为语句的一部分。使用反勾号可以让你做到这一点。它现在只是解决绑定部分不起作用的原因。
标签: php mysql mysqli prepared-statement