2014-09-29 126 views
1

我想使一个工作登录页面,我想跟踪用户的成功和不成功的登录。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的准备::():无法获取的mysqli 致命错误:调用一个成员函数的execute()一个非对象

+1

'print $ updateSQL'的输出是什么? – FuzzyTree 2014-09-29 20:17:27

+0

你如何实例化$ dbcon?你可以添加更多的信息吗? – 2014-09-29 20:21:23

+0

尝试在创建连接时传递'PDO :: ERRMODE_EXCEPTION'作为选项,并查看是否有任何异常被抛出以及它们在说什么。 – 2014-09-29 20:22:16

回答

0

问题修复。这只是一个问题,不能在正确的地方关闭$ dbcon和$ stmnt ......我敢肯定,如果我提供了更多的代码,任何人都可以告诉我这一点。

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

谢谢!

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国旗,你的脚本只是卡车,直到它遇到第二个错误,实际上死亡。