Я новичок в этом, так что извините, если это очень простой вопрос. Когда я пытаюсь вставить в MySQL, используя HTML-форму с несколькими вариантами, он вставляет только последний вариант, выбранный из выпадающего списка, но вставляет этот параметр несколько раз.
HTML
<form action ="test_page.php" method="post">
<select name= fruit[] size="8" multiple>
<option value ="Apples" >Apples</option>
<option value ="Oranges" >Oranges</option>
<option value ="Bananas" >Bananas</option>
<option value ="Grapes" > Grapes </option>
<option value ="Strawberries"> Strawberries</option>
</select>
<br><br>
<input type="submit" name="submit" value="Submit" />
</form>'
А вот и PHP
<?php
foreach ($_POST["fruit"] as $favourite)
{
$sql = "INSERT INTO Fruit_table (Apples, Oranges, Bananas, Grapes) VALUES ('$favourite','$favourite','$favourite', '$favourite');";
}
if ($conn->multi_query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Я нашел вашу проблему! Таким образом, вы на самом деле устанавливаете $sql
несколько раз с foreach
, выполняя только последний.
Ну вот так;
foreach ($_POST["fruit"] as $favourite)
{
$sql = "INSERT INTO Fruit_table (Apples, Oranges, Bananas, Grapes)
VALUES ('$favourite','$favourite','$favourite', '$favourite');";
}
Это полный рабочий код!
<?php
foreach ($_POST["fruit"] as $favourite)
{
$sql = "INSERT INTO Fruit_table (Apples, Oranges, Bananas, Grapes)
VALUES ('$favourite','$favourite','$favourite', '$favourite');";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
?>
Итак, я изменился только до тех пор, пока не будет foreach()
. Это должно работать сейчас!
multi_query
без всякой причины, и теперь имеет multi_query
для SQL-инъекции вместо сломанной. «Работа» означает «книгой», а не «может функционировать в чрезвычайно узком наборе обстоятельств и имеет побочные эффекты, которые могут включать в себя потерю контроля над вашей базой данных и / или вашей компанией».
Добавьте кавычки вокруг имени.
Из этого:
<select name=fruit[] size="8" multiple>
к этому:
<select name="fruit[]" size="8" multiple>