Как я могу обновить базу данных со значениями из массива? Например, скажем, мы получили базу данных с тремя столами:Обновление базы данных MySQL со значениями массива
Питание: mealnr (PK), имя, род
Ингредиенты: ingredientnr (PK), название, акции
Состав: foodnr (FK), componentmentnr (FK), количество
Я заполнил базу данных несколькими блюдами и ингредиентами. Каждое блюдо состоит из нескольких ингредиентов. Шеф-повар решает, что вам нужно всего 75 г ингредиента х вместо 100 г для еды, поэтому его необходимо изменить в базе данных. Конечно, это можно сделать с помощью SQL-команд, но я хочу сделать это, используя форму в PHP.
Сначала я сделал страницу, на которой отображаются все блюда. Еда может быть отредактирована с помощью кнопки редактирования рядом с ней и на основе еды, вы можете изменить количество одного или нескольких ингредиентов для этого конкретного приема пищи. На странице редактирования все имена ингредиентов и суммы отображаются в таблице. Поля количества - это текстовые поля, которые можно редактировать.
Я сделал этот скрипт, но я не знаю точно, как я могу обновить свою базу данных значениями массива. Я пробовал его с помощью foreach-loop, но он не работает. Может кто-нибудь мне помочь?
<?php
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db("eatit", $conn);
$id = $_REQUEST['mealnr'];
$result = mysql_query("SELECT meals.name AS mealname, structure.amount, ingredients.name AS ingredientname
FROM Meals, Structure, Ingredients
WHERE meals.mealnr = structure.mealnr
AND structure.ingredientnr = ingredients.ingredientnr
AND meals.mealnr = '$id'");
if(isset($_POST['save']))
{
$new_amount = $_POST['amount[]'];
foreach ($new_amount as $value) {
mysql_query("UPDATE structure SET amount ='$value', WHERE mealnr = '$id'")
or die(mysql_error());
}
}
mysql_close($conn);
?>
<p><strong>Ingredients:</strong></p>
<?php
echo "<table>";
echo "<tr>";
echo "<th>Ingredient</th>";
echo "<th>Amount (gr)</th>";
echo "</tr>";
while($ingredient = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>";
echo $ingredient['ingredientname'];
echo "</td>";
echo "<td>";
echo '<input type="text" formmethod="post" name ="amount[]" value="' . $ingredient['amount'] . '" />';
echo "</td>";
echo "</tr>";
}
?>
<input type="submit" name="save" value="save" />
Ну, первое, что вам нужно сделать с места в карьер, это прекратить попытки использовать ** mysql _ *** в качестве устаревшего ... вы должны переключиться на ** mysqli _ *** или ** PDO ** и посмотреть параметризуя их, поскольку выбор/обновление таблицы с переменной (которая может быть введена пользователем в будущем) оставляет вас уязвимой для SQL-инъекции (ее всегда лучше практиковать правильный путь для производственной среды. –
html form name 'name =" amount [] "' is '! =' To '$ _POST ['amount []']'. должен быть просто '$ _POST ['amount']' – Ghost