php更新SQL语句不起作用

时间:2014-09-29 20:15:39

标签: php sql

我正在尝试创建一个有效的登录页面,我想跟踪用户的成功登录和失败登录。

我正在尝试使用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()

2 个答案:

答案 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的问题......我敢肯定,如果我提供了更多可以告诉我的代码。

下次我会发布更多代码。我是这个网站的新手!

谢谢!