Php 使用MySQL和PDO插入阵列

Php 使用MySQL和PDO插入阵列,php,arrays,pdo,insert-into,Php,Arrays,Pdo,Insert Into,我阅读了很多教程来了解如何在一个查询中插入多行,因为我必须在PHP表单(v5.4)中处理多项选择问题 不幸的是,我的查询中仍然有错误 你能帮帮我吗 为了更准确地说明目的,我制作了一个表单,并用MySQL创建了一个数据库: 一个表(A),用于存储单选按钮和带有序列id的文本问题的所有单个值 每个多项选择题的表格,其中我在一列中列出了所有可能的答案,在另一列中列出了ID代码 每个多选题都有一个“中间”表,用于存储与在表A中插入时自动创建的id相同的id,以及复选框问题中所选值的id(因此,对于填写

我阅读了很多教程来了解如何在一个查询中插入多行,因为我必须在PHP表单(v5.4)中处理多项选择问题

不幸的是,我的查询中仍然有错误

你能帮帮我吗

为了更准确地说明目的,我制作了一个表单,并用MySQL创建了一个数据库:

  • 一个表(A),用于存储单选按钮和带有序列id的文本问题的所有单个值

  • 每个多项选择题的表格,其中我在一列中列出了所有可能的答案,在另一列中列出了ID代码

  • 每个多选题都有一个“中间”表,用于存储与在表A中插入时自动创建的id相同的id,以及复选框问题中所选值的id
    (因此,对于填写的一个表单,我希望在表A中得到一行,以及与每个对应问题中所选值相同的行“中间”表

我的PHP代码(仅将一个多项选择题作为测试):

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>

电话
邮件
其他



非常感谢您的帮助!

我终于解决了我的问题。对于那些对解决方案感兴趣的人,这里有一个(带有“获取最后一个id奖金”):


在不回答您的问题时,请使用预先准备好的语句!仅使用PDO不会使您的脚本对SQL注入安全。请使用[number of array elements]问号构建并准备您的查询,然后使用
$stmt->execute($array)插入
而不是将其内爆。检查如何执行此操作。您阅读了哪一个特定教程?呼出
$values
当我将“values($values)”更改为“values”($values')时,您应该会看到您的问题$values在我的表格和我的数据库表中显示(数组)。我阅读了答案和其他(随机)教程,我必须承认我对所有PDO函数都有点迷茫。你介意为我的特定示例编写语法吗?我是否应该包括任何循环,以便它对每个勾选的答案重复插入?对不起,我是新手。。。
<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>
try {
    if(isset($_POST['add'])){   
        if(isset($_POST['nature_contact'])) {
            $sql = "INSERT INTO db.int_contact (id_g,id_nature_contact) VALUES " .rtrim(str_repeat('('.$lastID.', ?),', count($_POST["nature_contact"])), ',');
            $statement = $pdo->prepare($sql);   
            $count = 1;
            foreach($_POST["nature_contact"] as $nature_contact) {
                $statement->bindValue($count++, $nature_contact);
            }
            $statement->execute();
        }
    }   
}
// and then add a catch exceptions