我正在尝试在此准备好的语句中绑定变量,但我一直收到错误:
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); }
我知道函数没有完全写在这里,但这不应该是一个问题。我不明白为什么我会收到此错误。
正如错误消息所说,这$qSelect似乎不是一个对象。尝试var_dump($qSelect);在您的prepare- call之后使用来调试它。还检查是否getDBH()返回您需要的东西。
$qSelect
var_dump($qSelect);
getDBH()
听起来好像prepare-call失败了(不知道为什么),所以它返回false- false不是对象,所以您不能调用bind_param()它。
false
bind_param()
编辑: 您尚未提供该信息,但似乎您正在使用PHP的PDO。
如果数据库服务器成功准备了该语句,则PDO :: prepare()返回PDOStatement对象。如果数据库服务器无法成功准备该语句,则PDO :: prepare()返回FALSE或发出PDOException(取决于错误处理)。
您应该将服务器配置为返回那些PDO异常,这将告诉您为什么prepare调用失败。