MySQLi绑定参数错误

时间:2013-07-24 18:00:49

标签: php mysql mysqli

我的代码在非对象错误上生成对成员函数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();
?> 

2 个答案:

答案 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方法。如上所述,您需要检查返回的语句。