使用 MySQL 和 PDO 插入数组

INSERT INTO array with MySQL and PDO

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

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

你能帮帮我吗?

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

我的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>

非常感谢您的帮助!

我终于解决了我的问题。对于那些对解决方案感兴趣的人,这里是(带有 "get the last id bonus"):

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