2012-07-02 99 views
0

以下是我在準備聲明中的嘗試。這會導致頁面在此刻死亡,顯然有些事情是錯誤的。PHP PDO準備更新聲明

function telephoneinsert($elector,$inputs,$outputs){ 
      global $dbh; 
      $sql = "UPDATE electors SET $inputs WHERE ID=?"; 
      $q = $dbh->prepare($sql); 
      $q->execute(array($outputs,$elector)); 
      //UPDATE STATS 
     } 

這就是所謂的網頁上這樣

telephoneinsert($Ielector,$inputs,$outputs); 

其中$輸入功能=貼出的數組,如果呼應看起來像這樣name = ?, type =?。它被刻意刪除最後的逗號rtrim'd。

如果

相同原理與$輸出呼應的樣子benjamin,socialist

錯誤報告深藏不露

$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
     print_r($dbh->errorInfo()); 
+0

您是否打開了error_reporting?您的PDO是否正確設置了錯誤報告模式? –

+0

我不這麼認爲。 $ this-> pdo-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_WARNING); \t \t print_r($ dbh-> errorInfo()); –

回答

1

$outputs包含逗號分隔的字符串,但​​需要將參數作爲數組的元素傳遞。因此,您必須將字符串分開:

$q->execute(explode(',', "$outputs,$elector")); 
0

在你的陣列在這裏你有2個元素

$q->execute(array($outputs,$elector)); 

,但只有一個?你sql中,數組元素的數量需要與它們出現的順序中的問號數量相匹配

+0

有多個問號要匹配。輸入包含任意數量問號的刺激$ inputs ='name =?,type =?' –

+0

爲什麼你在這裏提交了一段我的代碼作爲回答,顯然你沒有看過這個問題。 –

+0

@Robin Knight其實,這個答案是正確的,區別在於'1'應該是'3' ... – jeroen