2013-09-28 133 views
2

我PDO新手,我不知道如何捕捉错误的或看到什么错呢看看这段代码:PHP PDO更新查询不工作

呼叫这里的功能:

$this->storage->updateTriplet($cookieValues[0],$newToken.$this->salt, $cookieValues[2].$this->salt, $t, $expire); 

问题函数:

public function updateTriplet($credential, $token, $persistentToken,$t, $expire=0) { 
     $sql = "UPDATE {$this->tableName} 
     SET cred=?, tok=?, ptok=?, t=?, expires=? 
     WHERE ptok=?'".$persistentToken."' "; 
    $query = $this->connection->prepare($sql); 
    $query->execute(array($credential ,$token, $persistentToken , $t , date("Y-m-d H:i:s", $expire))); 
    } 

而且该功能良好,插入功能使用我:

public function storeTriplet($credential, $token, $persistentToken,$t, $expire=0) { 
    $sql = "INSERT INTO {$this->tableName}({$this->credentialColumn}, " . 
      "{$this->tokenColumn}, {$this->persistentTokenColumn}, " . 
      "{$this->t},{$this->expiresColumn}) VALUES(?, SHA1(?), SHA1(?),?, ?)"; 
    $query = $this->connection->prepare($sql); 
    $query->execute(array($credential, $token, $persistentToken,$t, date("Y-m-d H:i:s", $expire))); 
    } 

无论如何,我的插入功能工作完美问题是在更新功能的第一个,我的更新功能不工作,任何人知道我的问题在哪里,我做错了什么?以及如何查看更新函数上的MySql PDO错误?

更新:回答和解决:

public function updateTriplet($credential, $token, $persistentToken,$t, $expire=0) { 
     $sql = "UPDATE {$this->tableName} 
     SET cred=?, tok=?, ptok=?, t=?, expires=? 
     WHERE ptok=SHA1('".$persistentToken."'); 
    $query = $this->connection->prepare($sql); 
    $query->execute(array($credential ,$token, $persistentToken , $t , date("Y-m-d H:i:s", $expire))); 
    } 

非常感谢。

+0

我建议你把'$ persistentToken'作为参数传递给你,就像你对别人做的那样。您将确保它将被正确转义。 –

回答

1

看来你错过了提供ptok参数。

$sql = "UPDATE {$this->tableName} 
     SET cred=?, tok=?, ptok=?, t=?, expires=? 
     WHERE ptok=?"; 

$query->execute(array($credential ,$token, $persistentToken , 
     $t , date("Y-m-d H:i:s", $expire), $ptok)); 
              // ^______ Add this variable 
+0

我认为它应该是'$ persistentToken',但是您错过了一个参数是正确的。 – Revent

+0

噢,我很抱歉,我试了几个小时,我没有看到这个,谢谢你现在工作,问题是:WHERE ptok = SHA1(''。$ persistentToken。''),再次感谢,我会在几分钟之内,Stack说我等了6分钟。 –

+0

高兴地帮助:) –