小编典典

在非对象上调用成员函数bind_param()

php

我正在尝试在此准备好的语句中绑定变量,但我一直收到错误:

Call to a member function bind_param() on a non-object

调用该函数,并将变量传递给它。当我更改函数以仅回显变量时,该变量会在页面上正常打印,但是如果我尝试在此处绑定它,则会收到错误。有人可以帮忙吗?

//CALL FROM PAGE ONE
check($username);

//FUNCTION ON PAGE 2
function check($username){
$DBH = getDBH();
$qSelect = $DBH->prepare("SELECT * FROM users WHERE username = ?");
$qSelect->bind_param("s", $username);
}

我知道函数没有完全写在这里,但这不应该是一个问题。我不明白为什么我会收到此错误。


阅读 395

收藏
2020-05-26

共1个答案

小编典典

正如错误消息所说,这$qSelect似乎不是一个对象。尝试var_dump($qSelect);在您的prepare-
call之后使用来调试它。还检查是否getDBH()返回您需要的东西。

听起来好像prepare-call失败了(不知道为什么),所以它返回false-
false不是对象,所以您不能调用bind_param()它。

编辑:
您尚未提供该信息,但似乎您正在使用PHP的PDO。

如果数据库服务器成功准备了该语句,则PDO :: prepare()返回PDOStatement对象。如果数据库服务器无法成功准备该语句,则PDO ::
prepare()返回FALSE或发出PDOException(取决于错误处理)。

您应该将服务器配置为返回那些PDO异常,这将告诉您为什么prepare调用失败。

2020-05-26