PHP多选表单插入多个[重复]

Posted

技术标签:

【中文标题】PHP多选表单插入多个[重复]【英文标题】:PHP multiple select form to insert multiple [duplicate] 【发布时间】:2020-02-24 11:08:43 【问题描述】:

我添加了一个选择表单,人们可以在其中选择他们的狗获得的奖励。问题是它只在数据库中插入一个选项,并且它是一个多选。允许人们在选择框中添加所有选项。

$query  = "UPDATE dogs SET ";
    $query .="dog_name = '$dog_name', ";
    $query .="affix = '$affix', ";
    $query .="owners = '$owners', ";
    $query .="sire = '$sire', ";
    $query .="dam = '$dam', ";
    $query .="dob = '$dob', ";
    $query .="sex = '$sex', ";
    $query .="award = '$award', ";
    $query .="champ = '$champ', ";
    $query .= "dog_photo = '$dog_photo' ";
    $query .= "WHERE dog_id = $the_dog_id ";

    $update_dog = mysqli_query($connection,$query);


<select class="form-control" name="award" multiple="multiple" data-plugin-multiselect data-plugin-options=' "maxHeight": 200, "enableCaseInsensitiveFiltering": true ' id="ms_example6">
     <option value="JW">JW</option>
     <option value="BOY">Bulldog Of Year</option>
     <option value="BOY">Crufts Champion</option>
     <option value="JC">Junior Champion</option>
        </select>

【问题讨论】:

您的代码易受 SQL 注入攻击。您应该使用准备好的语句。 首先,您应该使用类似 var_dump($_POST) 的方式查看您的发布数据。其次,您的数据库设计没有经过深思熟虑。我们知道您想要“众多”奖项中的一个,但是您有所有者(超过 1 个?)等。您知道您将如何处理这些吗?而且我猜你重复的 BOY 选项值不同的名字只是一个错字,也会给你带来悲伤。 是的,男孩是一个错字。我同意数据库设计很混乱,没有经过深思熟虑。这是一个狗展结果网站,其想法是显示狗的信息,其中一部分将根据他们获得的奖项显示图像。 【参考方案1】:

循环遍历它。

假设你的表单是一个 POST 请求,将字段命名为数组

name="award[]"

然后遍历每个条目。

foreach($_POST['award'] as $award) 
  $query  = "UPDATE dogs SET ";
  $query .="dog_name = '$dog_name', ";
  $query .="affix = '$affix', ";
  $query .="owners = '$owners', ";
  $query .="sire = '$sire', ";
  $query .="dam = '$dam', ";
  $query .="dob = '$dob', ";
  $query .="sex = '$sex', ";
  $query .="award = '$award', ";
  $query .="champ = '$champ', ";
  $query .= "dog_photo = '$dog_photo' ";
  $query .= "WHERE dog_id = $the_dog_id ";

  $update_dog = mysqli_query($connection,$query);

【讨论】:

怎么了,为什么要投反对票? 很接近了。您的第一个答案可以提供所有选择。 OP 需要知道如何使用 var_dump() 或其他东西查看 $_POST 以查看发生了什么。我认为问题在于为每个奖项创建一个全新的重复条目。几乎需要一个奖项表来列出实际的奖项,并需要一个 dogs_awards 连接表来将一只狗与它的一对多可能的奖项联系起来。 您正确的蒂姆对此有另一种看法,我需要从更好的数据库设计开始。所以我要建立一个奖项表,然后对狗表进行内部连接。

以上是关于PHP多选表单插入多个[重复]的主要内容,如果未能解决你的问题,请参考以下文章

通过html和php表单将数据插入MySQL数据库时遇到问题[重复]

如何防止在 PHP 中重复提交表单(跨多个窗口进行保护)?

PHP / MySQL:如何使用WHILE循环插入数据库[重复]

php如何避免刷新页面重复提交

在 HTML 表单中使用多个选择框 [重复]

通过 AJAX 提交多个具有相同名称的 HTML 表单 [重复]