2012-07-02 66 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