【发布时间】:2014-09-29 20:15:39
【问题描述】:
我正在尝试制作一个有效的登录页面,并且我想跟踪用户的成功和不成功登录。
我正在尝试使用 php 中的更新语句来做到这一点:
$updateSQL="UPDATE login SET successfulLogins = IFNULL(successfulLogins, 0) + 1
WHERE username ='". $user ."'";
$updateStmnt=$dbcon->prepare($updateSQL);
$updateStmnt->execute();
这给了我错误:致命错误:在非对象上调用成员函数 execute()
我尝试使用 SQL 在数据库中手动输入更新语句,它工作正常,所以问题与 php 有关。我认为
谢谢
编辑:我通过在代码前面关闭 dbcon 解决了这个问题,但现在我对这段代码有同样的问题:
$isError=true;
$errorMessage.="Username or password is incorrect<br />";
$updateSQL="UPDATE login SET unsuccessfulLogins = IFNULL(unsuccessfulLogins, 0) + 1
WHERE username ='". $user ."'";
$updateStmnt=$dbcon->prepare($updateSQL);
$updateStmnt->execute();
我现在得到:
警告:mysqli::prepare(): 无法获取 mysqli 致命错误:在非对象上调用成员函数 execute()
【问题讨论】:
-
print $updateSQL的输出是什么? -
你是如何实例化 $dbcon 的?你能补充更多信息吗?
-
在创建连接时尝试传入
PDO::ERRMODE_EXCEPTION作为选项,看看是否有任何异常被抛出以及它们在说什么。 -
您是否启用了错误处理和显示?如果没有,你应该从那开始。
-
如果您想使用准备好的语句,请使用占位符而不是直接在查询中插入(随机)文本。示例见PDO::prepare 和mysqli::prepare