2014-07-18 170 views
0

而upgreading我的應用程序之一Mysql的PDO,查詢EXEC失敗

  • 腳本語言,我也遇到了奇怪的問題是PHP
  • 數據庫MYSQL
  • 我使用PDO類處理

我有這個簡單的用戶更新模塊,其中包含4個不同的領域,並工作得很好,今天我決定增加更新用戶組和查詢可執行文件失敗後的能力。

在分貝

- 用戶表具有以下字段:

  • 用戶名(VARCHAR 50)
  • 密碼(VARCHAR 64)
  • 電子郵件(VARCHAR 128)
  • 名稱(VARCHAR 50)
  • group(int 1)
  • active(int 1)

查詢我在表演的同時更新,在upgreade是在此之前:

UPDATE users SET username = ?, email = ?, name = ?, active = ? WHERE id = 1 
Array 
(
    [username] => john 
    [email] => [email protected] 
    [name] => John Doe 
    [active] => 1 
) 

它工作得很好,現在查詢我正在執行是這樣的:

UPDATE users SET username = ?, email = ?, name = ?, group = ?, active = ? WHERE id = 1 
Array 
(
    [username] => john 
    [email] => [email protected] 
    [name] => John Doe 
    [group] => 2 
    [active] => 1 
) 

這一個心不是工作,但是如果我沒有檢查ERRORINFO它返回數組:

Array 
(
    [0] => 00000 
    [0] => 
    [0] => 
) 

於是,我就只更新組沒有其他領域是這樣的:

UPDATE users SET group = ? WHERE id = 1 
Array 
(
    [group] => 2 
) 

也失敗了,這是奇怪的,因爲如果我將它複製到phpmyadmin sql runer它正在正確執行。

,做高管的代碼是這樣的:

if($this->_query = $this->_pdo->prepare($sql)) { 
    if(count($params)) { 
     $x = 1; 
     foreach($params as $param) { 
      $this->_query->bindValue($x, $param); 
      $x++; 
     } 
    } 

    if($this->_query->execute()) { 
     $this->_insertid = $this->_pdo->lastInsertId(); 
     $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ); 
     $this->_count = $this->_query->rowCount(); 
    } else { 
     $this->_error = true; 
    } 
} 

再次一切工作,除非我嘗試更新組,只有失敗的話,那我不明白,也許有人不,所有並欣賞提示:)

順便說一句,也許值得一提的是,當我INSERT代替UPDATE它被正確exec'd,只更新有一些問題

+0

使用http://php.net/manual/ en/mysqli.error.php – Phantom

+0

我不認爲那個mysqli命令可以用於PDO類 – Mevia

+0

然後使用:http://php.net/manual/en/pdo.errorinfo。php – Phantom

回答

4

集團是一家保留字在MySQL http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

不知道別的東西也錯在你的代碼,但試圖利用周圍[轉載]字``

`group` 
+1

*「組是一個被禁止的詞」* - 一個嚴厲的詞的位。它不是「禁用」的,一旦可以使用它,但更多的是「保留關鍵字」。 –

+0

什麼wouldnt它或被稱爲like,傢伙是輝煌的:D它已經:)它是奇怪的,雖然當我插入或選擇並說組它的工作,如果我更新它需要這些標記周圍...無論哪種方式謝謝你幫助隊友:) – Mevia