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