2013-09-28 134 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

高興地幫助:) –