2014-01-27 43 views
0

我没有得到任何错误,但是当我刷新我的数据库似乎没有任何经历。连接凭证绝对正确。PDO插入声明不张贴

$query = $pdo->prepare('INSERT INTO direct_transfer (fname, lname, add, city, post, country, email, nummag, donate) VALUES (:fname, :lname, :add, :city, :post, :country, :email, :nummag, :donate)'); 
$query->execute(array(':fname'=>$fname, 
':lname'=>$lname, 
':add'=>$add, 
':city'=>$city, 
':post'=>$post, 
':country'=>$country, 
':email'=>$email, 
':nummag'=>$nummag, 
':donate'=>$donate)); 

回答

4

当您使用reserved words in mysql,你需要逃避他们在反引号:

... (fname, lname, `add`, city, post, country, email, nummag, donate) ... 

您还应该添加错误处理机制,PDO告诉你马上什么是错的。

你可以告诉PDO加入此抛出异常你连接到数据库后:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

您还可以设置错误处理模式,当您打开连接,看manual

+0

我需要包含什么才能看到错误?对不起,我是这个新手。 – mpn

+0

不应该这个''lname'=> $ lname,'也冒号吗? '':lname'=> $ lname,'等 –

+0

@pwneth查看我的编辑。 – jeroen

1

没有':'在数组中。

$query = $pdo->prepare('INSERT INTO `direct_transfer` (`fname`, `lname`, `add`, `city`, `post`, `country`, `email`, `nummag`, `donate`) VALUES (:fname, :lname, :add, :city, :post, :country, :email, :nummag, :donate)'); 

$query->execute(array('fname'=>$fname, 
         'lname'=>$lname, 
         'add'=>$add, 
         'city'=>$city, 
         'post'=>$post, 
         'country'=>$country, 
         'email'=>$email, 
         'nummag'=>$nummag, 
         'donate'=>$donate)); 
+0

有或没​​有冒号':'它仍然有效,所以这不是问题。实际的问题是使用''保留字'](http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html)''add“'需要放在里面反引号。然而,你的答案包含反引号内的所有列是一个好方法。所以,使用'':fname'=> $ fname'或''fname'=> $ fname'都是好的。但是,冒号对于'VALUES'是必需的。然而,一切都不会丢失。我做了+ 1你的回答,欢呼。 –