我正在尝试创建一个有效的登录页面,我想跟踪用户的成功登录和失败登录。
我正在尝试使用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()
答案 0 :(得分:0)
$updateSQL = "UPDATE login SET successfulLogins = IFNULL(successfulLogins, 0) + 1 WHERE username ='". $user ."'";
// check your function returns
if( ! $updateStmnt = $dbcon->prepare($updateSQL) ) {
// check for error information if an error occurred
die(print_r($dbcon->errorInfo()));
}
// second verse, same as the first
if( ! $updateStmnt->execute() ) {
die(print_r($updateStmnt->errorInfo()));
}
基本上你的prepare()
由于某种原因而失败了,因为你既没有检查你的功能返回也没有给PDO提供PDO::ERRMODE_EXCEPTION
标志,你的脚本只是卡车直到它碰到一个第二个错误,实际上已经死了。
答案 1 :(得分:0)
问题已解决。这只是一个没有在正确的位置关闭$ dbcon和$ stmnt的问题......我敢肯定,如果我提供了更多可以告诉我的代码。
下次我会发布更多代码。我是这个网站的新手!
谢谢!