调用非对象上的成员函数 bind_param()(尽管经过研究仍无法解决)
$stmt = $mysqli->prepare('select Un from member where Lock = ? and Activated = ?');
$stmt -> bind_param("ss", 'N', 'Y');//This line gave the error
$stmt -> execute();
$stmt->store_result();//apply to prepare statement
$numRows = $stmt->num_rows;
if ($numRows > 0)//if have result
while ($row = $stmt->fetch())
我上面的代码给了我一个在非对象上调用成员函数 bind_param()" 错误.我真的不明白为什么我会收到这个错误.我有正确的列名.
my above code gave me a "Call to a member function bind_param() on a non-object" error. I really don't get it why i getting this error. I have correct cols name.
我是 mysqli 的新手,想学习如何调试此类错误.
I am new to mysqli and would like to learn how to debug such error.
- 我的准备语句或 bind_param() 有什么问题?
- 请教我如何调试此类错误
推荐答案
在非对象上调用成员函数 bind_param()
意味着 $stmt
,即你试图调用 bind_param
on,不是一个对象.为什么它不是一个对象?因为 $mysqli->prepare
没有返回一个对象.为什么它没有返回一个对象?
Call to a member function bind_param() on a non-object
means that $stmt
, which you're trying to call bind_param
on, is not an object. Why is it not an object? Because $mysqli->prepare
did not return an object. Why did it not return an object?
mysqli_prepare()
返回一个语句对象或 FALSE
.
http://www.php.net/manual/en/mysqli.prepare.php
mysqli_prepare()
returns a statement object orFALSE
if an error occurred.
http://www.php.net/manual/en/mysqli.prepare.php
所以这意味着一定发生了错误.你应该打开error_reporting
,它可能会告诉你,或者检查$mysqli->error()
,这也可能告诉你.
So that means an error must have occurred. You should turn on error_reporting
, which will probably tell you, or examine $mysqli->error()
, which may tell you as well.
相关文章