1
我读了很多教程,了解如何在一个查询中插入多行,因为我必须处理PHP表单(v5.4)中的多个选择问题。INSERT INTO与MySQL和PDO的阵列
不幸的是,我的查询中仍然有错误。
你能帮我吗?
为了更精确有关目的,我做了一个表格,我创建的数据库中的MySQL与:
一个表(A),用于存储从单选按钮所有单个值和文本的问题与序列号。
每个多项选择问题的表格,其中我在一列中列出了所有可能的答案,在另一列中列出了一个ID代码。
和“中间”表中的每个多个选择问题,以存储比在表A中插入过程中自动创建的一个,并从在复选框问题
(如此选择的值的ID相同的ID,对于一种形式充满,我期望能获得在表A中的一行,并尽可能多的行作为选择的值在每个相应的“中间”表。作为一个测试
我的PHP代码(仅指一个多项选择问题):
try {
$pdo = new PDO('mysql:host=myserver_url;dbname=my_db', 'my_user','my_pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
}
catch(PDOException $e) {
echo 'Fail to connect';
exit();
}
try {
if(isset($_POST['add'])){
if(isset($_POST['checkbox_name'])) {
$values = '('.implode('),(', $_POST['checkbox_name']).')';
$sql =$pdo->exec("INSERT INTO my_db.my_table (field1)
VALUES ($values) ");
}
}
}
catch(PDOException $e) {
$msg = 'ERROR PDO in ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
HTML代码:
<body>
<form name="form_1" method="post" action="form_1.php">
<input type="checkbox" name="checkbox_name[]" value="1"><label >Telephone</label><br/>
<input type="checkbox" name="checkbox_name[]" value="2"><label >Mail</label><br/>
<input type="checkbox" name="checkbox_name[]" value="3"><label >Other</label><br/>
<br/>
<br/>
<input type="submit" name="add" value="SEND"/>
</form>
非常感谢您的帮助!
虽然没有回答你的问题,请使用准备好的语句!仅使用PDO不会使您的脚本安全到SQL注入。使用[数组元素]问号构建和准备查询,然后使用'$ stmt-> execute($ array)'插入它,而不是对它进行内插。检查[这个答案](http://stackoverflow.com/a/327384/1154316)如何做到这一点。 – tillz
你读过哪个特定的教程? –
当你将“VALUES($ values)”改为“VALUES'($ values')”时,你可以看到你的问题 – RiggsFolly