PHP - 准备语句bind_param()
问题描述:
我知道还有很多其他人有这个问题,但我找不到解决方案。我以前有这个问题,我设法解决它:PHP - 准备语句bind_param()
$check = $conn->prepare("SELECT password,key,user FROM `users` WHERE email = ?");
$check->bind_param("s",$url_email); <-- line 31
$check->execute();
mysqli_stmt_bind_result($check,$db_pass,$db_user_id,$db_username);
$check->close();
但使用事先准备好的声明时,我得到这个错误:
PHP Fatal error: Call to a member function bind_param() on a non-object in /var/www/html/login.php on line 31
答
你很幸运。你所有的域名都是mysql中的keywords or reserved words。
你应该逃避他们:
SELECT `password`, `key`, `user` FROM `users` WHERE email = ?
严格说只有key
是一个保留字,password
和user
都没有,但还是escape'em。
此外,感谢@ chris85,您正在混合OO和程序mysqli
。取而代之的
mysqli_stmt_bind_result($check,$db_pass,$db_user_id,$db_username);
使用
$check->bind_result($db_pass, $db_user_id, $db_username);
'key'被保留。 – chris85
您的查询也未选择用户标识“$ db_user_id”。 – chris85