2011-02-23 10 views
0

由於某種原因,此自定義PDO類無法寫入數據庫。它只是悄然失敗 - 沒有錯誤信息拋出。一個非常類似的自定義PDO類(ReadPDO)對於從數據庫讀取非常有效。當通過PHPMyAdmin查詢數據庫時,生成的SQL語句正常工作。我已經仔細檢查了用戶權限,並且所有內容都按順序排列。自定義PDO類無法正常安裝

我懷疑我誤解了一些工作。有任何想法嗎?

// Creates a write-only PDO, using config settings from inc_default.php 
class WritePDO extends PDO{ 

    public function __construct(){ 
     //Pull global DB settings 
     global $db; 
     global $write_host; 
     global $write_username; 
     global $write_password; 

     try{ 
      parent::__construct("mysql:dbname={$db};host={$write_host}", $write_username, $write_password); 
     } catch (PDOException $e){ 
      echo 'Connection failed: ' . $e->getMessage(); 
     } 
    } 
} 

private function updatePlayer(){ 
    $conn = new WritePDO(); 
    $sql = "UPDATE {$this->hvz_db} 
     SET 
     hvz_bitten  ='{$this->hvz_bitten}', 
     hvz_died  ='{$this->hvz_died}', 
     hvz_feedCode ='{$this->hvz_feedCode}', 
     hvz_status  ='{$this->hvz_status}', 
     hvz_feeds  ='{$this->hvz_feeds}', 
     hvz_lastFed  ='{$this->hvz_lastFed}', 
     hvz_ozOpt  ='{$this->hvz_ozOpt}', 
     hvz_parent  ='{$this->hvz_parent}' 
     WHERE users_id ={$this->id}"; 
    $query = $conn->exec($sql); 
} 

它吐出來的是SQL如下:

UPDATE hvz_2011_spring SET hvz_bitten ='', hvz_died ='', hvz_feedCode ='NOMNOM', hvz_status ='Human', hvz_feeds ='0', hvz_lastFed ='', hvz_ozOpt ='0', hvz_parent ='' WHERE users_id =1 
+0

可能重複[拿捏錯誤消息出來PDO的?](http://stackoverflow.com/questions/3726505/how-to-squeeze-error-message-out-of- pdo) – 2011-02-23 21:58:15

+0

這不完全相同 - 雖然能夠從PDO中擠出錯誤消息有助於解決此特定問題。 – 2011-02-23 22:09:32

回答

1

你確定的SQL是正確的?

該exec不會發送任何錯誤消息。

嘗試做var_dump($ conn-> errorInfo());在$ conn-> exec($ sql)之後;

/埃米爾

+0

它拋出的錯誤是:array(3){[0] => string(5)「42000」[1] => int(1143)[2] => string(102)「SELECT command denied to user'refactor2 '''localhost'列'hvz_2011_spring''}列'users_id'讓我試一下... – 2011-02-23 22:41:32

+0

這樣做 - 顯然它需要訪問SELECT命令來執行UPDATE命令。誰知道? – 2011-02-23 22:43:07