我花了一整天的时间试图找出这个问题,但没有运气。我已经看到了一些直接将常量用作参数的问题。我所有的论点都是变量。我错过了一些非常明显的东西吗?
$one = 1;
$two = 2;
$three = 3;
if ( !($stmt = $mysqli->prepare('INSERT INTO test3 (one, two, three) VALUES (?, ?, ?)')) ) {
echo "Prepare failed (".$stmt->errno.") ".$stmt->error."\n";
$stmt->close();
exit();
}
if ( !($stmt->bind_param('iii',$one,$two,$three)) ) {
echo "Failed to bind (".$stmt->errno.") ".$stmt->error;
$stmt->close();
exit();
}
if ( !($stmt->execute) ) {
echo "Execute failed (". $stmt->errno.") ". $stmt->error."\n";
$stmt->close();
exit();
}
编辑:我实际上正在使用bind_param
但在尝试不同的东西后忘记将其更改回来。代码按原样复制和粘贴。将 bind_value 改回 bind_param 后,我仍然得到同样的错误。
编辑 2:我觉得很愚蠢,我用一个新名称保存了我的 php 文件,这样我就可以简化代码,但我忘记更改 POST 方法的 url 以反映该更改。所以我现在得到的错误是:Undefined property: mysqli_stmt::$execute
以及mysql日志中的相应输出:
42 Connect test@localhost on testdb
42 Prepare [1] INSERT INTO test3 (one, two, three) VALUES (?, ?, ?)
42 Quit