【问题标题】:PHP multiple select form to insert multiple [duplicate]PHP多选表单插入多个[重复]
【发布时间】: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 选项值不同的名字只是一个错字,也会给你带来悲伤。
  • 是的,男孩是一个错字。我同意数据库设计很混乱,没有经过深思熟虑。这是一个狗展结果网站,其想法是显示狗的信息,其中一部分将根据他们获得的奖项显示图像。

标签: php mysqli


【解决方案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 连接表来将一只狗与它的一对多可能的奖项联系起来。
  • 您正确的蒂姆对此有另一种看法,我需要从更好的数据库设计开始。所以我要建立一个奖项表,然后对狗表进行内部连接。
猜你喜欢
  • 2020-05-16
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多