This question already has answers here:
mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc… expects parameter 1 to be resource or result
(32个答案)
9个月前关闭。
我有一个执行准备好的语句的函数。我已经通过用异常捕获器包装
这是功能
这是函数调用之一
打印到页面时出错
这导致此SQL:
例如替换为
但是你想要像
因此,有两个错误:您想要一个表名,而不是$ table。而且您需要一个列名,而不是一个字符串绑定变量值。
使用字符串串联:
(我希望我没记错。自从我将PHP与SQL结合使用已经有一段时间了。)
(32个答案)
9个月前关闭。
我有一个执行准备好的语句的函数。我已经通过用异常捕获器包装
prepare()
行来将问题定位到SQL代码,但是我无法弄清楚问题出在哪里。这是功能
function update_table($column, $value, $conn, $email) {
require "config.php";
$stmtupdate = $conn->prepare("UPDATE $table SET ? = ? WHERE email = ?");
$stmtupdate->bind_param("sis", $column, $value, $email);
$stmtupdate->execute();
$stmtupdate->close();
}
这是函数调用之一
update_table("failedCount", 0, $conn, $email);
打印到页面时出错
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in /var/www/html/usenergy/login.php:125 Stack trace: #0 /var/www/html/usenergy/login.php(218): update_table('failedCount', 0, Object(mysqli), 'testmail@test...') #1 {main} thrown in /var/www/html/usenergy/login.php on line 125
column
是一个字符串,用于定义将$ value设置为的列名($ value是整数)。 最佳答案
你有这个:
$stmtupdate = $conn->prepare("UPDATE $table SET ? = ? WHERE email = ?");
$stmtupdate->bind_param("sis", $column, $value, $email);
这导致此SQL:
UPDATE $table
SET @var1 = @var2 WHERE email = @var3
例如替换为
UPDATE $table
SET 'column' = 123 WHERE email = 'something'
但是你想要像
UPDATE mytable
SET mycolumn = 123 WHERE email = 'something'
因此,有两个错误:您想要一个表名,而不是$ table。而且您需要一个列名,而不是一个字符串绑定变量值。
使用字符串串联:
$stmtupdate = $conn->prepare("UPDATE ".$table." SET ".$column." = ? WHERE email = ?");
$stmtupdate->bind_param("is", $value, $email);
(我希望我没记错。自从我将PHP与SQL结合使用已经有一段时间了。)
关于php - prepare()输出bool为false,声明对我来说是正确的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55436889/
10-11 01:25