【发布时间】:2014-04-13 19:51:06
【问题描述】:
我见过一些与我的问题类似的问题,但没有一个问题使用数组循环来插入表列和要插入的值。我对 PDO 还很陌生,所以我对如何完成这项工作有点迷茫。
我正在创建一个表单,学生可以在其中输入多项选择题的答案,并将他们的答案存储在数据库中。有 68 个问题。现在我正在对每一列和值进行硬编码,如下所示:
$stmt = $DBH->prepare("INSERT INTO my_table (student, q1, q2, etc...)
VALUES (?, ?, ?, etc...) ");
$stmt->execute(array($student_name, $answer[1], $answer[2], $answer[3],
etc... through $answer[68]));
这很好用,但必须有一种更简单的方法来做到这一点,而无需键入每个实例。我希望能够遍历表格列(上面的 q1 等)的数字以及答案变量数组。我只是不知道如何解决这个问题。
即使自动拥有正确数量的占位符问号 - 这可能吗?
【问题讨论】:
-
问题出在你的数据库设计中:你不应该有 68 列包含相似的数据,你应该有一个单独的表,每个问题都有一行。
-
您可以通过编程方式构建
?字符串;只要您完全控制要构建它的文本(在本例中为,?),就没有注入风险。 -
您也可以使用
?转义列名。我不确定它的可移植性如何,但在 MySQL 中,您甚至可以在表名中使用?! (但不要那样做) -
您确定可以使用
?作为列名吗? stackoverflow.com/questions/182287/… 讨论这个。