使用foreach循环的PDO插入中的语法错误

时间:2017-04-27 15:34:05

标签: php mysql pdo

我尝试使用PDO将一些调查结果添加到数据库中。因为调查有50个问题,我认为我会使用PHP foreach循环添加它们来添加每个问题的结果。

有两个不同的表格。一个是包含用户详细信息(名称,电子邮件等)的响应者表。另一张表是一个回复表,显示受访者对调查的答案,并通过他们的ID链接。

每次我跑这个都会收到错误:

  

未捕获的PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064

第一个语句执行运行正常,我可以看到添加到数据库的用户详细信息,但我无法让第二个语句成功运行。

//Add respondent to database
$sth = $dbh->prepare("
    INSERT INTO `respondents` (`id`,`firstname`,`lastname`,`email`) VALUES (?,?,?,?);
    INSERT INTO `responses` (`rid`) VALUES (?)
");

$sth->execute([$id, $first, $last, $email, $id]);

//Add survey results
$sth = $dbh->prepare("
    INSERT INTO `responses` (?) VALUES (?)
    WHERE `rid` = ?
");

foreach ($responses as $key => $response) {
    $sth->execute([$key, $response, $id]);
}

我对PDO和MySQL有点新意,所以我确定这不是最好的方法,所以任何帮助都会受到赞赏。感谢。

完整错误:

  

致命错误:未捕获PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法出错;查看与您的MariaDB服务器版本对应的手册,以获得在' 1')VALUES(' 1')附近使用的正确语法; rid =' df3f745ad872d72aa6466e571af743eb''

0 个答案:

没有答案