php - 如何插入多个选择的值

标签 php mysql sql

我有一个列表多选,这是代码:

<form method="post" action="">
      <select name=thematique[] multiple>
        <option value="1"> MIE </option>
        <option value="2">  Migration </option>
        <option value="3"> Réunification familiale </option>
      </select>
      <button type="submit" class="button" name="categoriser">Catégoriser</button>
    </form>

我的问题是,如果我选择 MIE + Migration + Réunification familiale,那么我的数据库中有 3 行相同的 ID。 我想要一行插入选择的所有选项(0 1 2 或 3)。

$id_struct=$_POST['id_struct'];
$thematique=$_POST['thematique']);
foreach($thematique as $item) {
                $string= $item.' ';
                echo $string;

    $bdd->exec("INSERT INTO categorisation SET id_thematique=$string
                    WHERE id_struct=$id_struct");
    }

PS:id_thematique 是一个外键。

最佳答案

1) 您需要在选择框中添加 VALUE 属性。

2) 不要将INSERT 查询 视为UPDATE 查询

你的选择框

<select name=thematique[] multiple>
        <option value="MIE"> MIE </option>
        <option value="Migration"> Migration </option>
        <option value="Reunification_familiale"> Reunification familiale </option>
      </select>

用于插入三个单独字段的 php 文件

<?php 
foreach ($_POST['thematique'] as $thematique) 
{
 ///your insert code//
 $bdd->exec("INSERT INTO categorisation (`thematique`) VALUES ('".$thematique."'");
}?>

关于php - 如何插入多个选择的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306345/

相关文章:

php - 从网格数组更新数据库

PHP MySQL 从连接表中打印用户字段

php - 通过 PHP 插入时 MySQL TIMESTAMP 不更新

mysql - 将带有连接的mysql选择查询转换为带有连接的更新查询

sql - 同一列的多个条件

java + sqlite : how to open database as read-only?

php - CakePHP 3 查找 id 匹配的所有位置或数组未知长度

php - Codeigniter query->num_rows 错误地返回 0

mysql - 如何使用 MySQL COALESCE 指定主排序顺序

mysql - 用于新用户注册的 AWS Lambda 和 SES