我的代码在非对象错误上生成对成员函数bind_param()的调用。当我执行var转储时,结果是bool(false)。看来PHP并不认为$ statement变量是一个对象。我对此有点新意,所以任何帮助都会受到赞赏。我也尝试用没有运气的字符串替换$ id变量值。
<?php
$con=new MySQLi("localhost","root","mysql","tinymce");
$statment = $con->prepare("SELECT * FROM 'content' WHERE 'id'=?");
$id=1;
$statement->bind_param('i', $id);
$statement->execute();
$con->close();
?>
答案 0 :(得分:2)
这是我注意到的第一件事。使用后标记不是单引号:
$statment = $con->prepare("SELECT * FROM `content` WHERE `id`=?");
注意到其他问题:
// Haven't tested this but it could be case sensitive, use `mysqli` not `MYSQLi`
$con=new mysqli("localhost","root","mysql","tinymce");
// Typo here? it should be `$statement = ` not `$statment` as you're using `$statement` in rest of your code.
$statement = $con->prepare("SELECT * FROM `content` WHERE `id`=?");
答案 1 :(得分:0)
SQL语句中存在错误:
SELECT * FROM 'content' WHERE 'id'=?
在处理字段时需要使用反向标记:
SELECT * FROM `content` WHERE `id`= ?
现在关注你的问题。正如Documentation中所述,如果出现错误,->prepare
将返回FALSE
。
这会导致在“非对象”上调用bind_param
时出错。 False不是对象,加上它没有bind_param
方法。如上所述,您需要检查返回的语句。