PDO插入声明未发布

时间:2014-01-27 18:27:24

标签: php sql 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));

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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));