Обновление определенной одной или нескольких строк MySQL с повторяющимися именами атрибутов HTML

Я пытаюсь обновить 1 или несколько строк MySQL в PHP, в то время как имена тегов ввода и выбора HTML имеют одно и то же имя атрибута.

Форма отображается в модальном HTML.

Я попытался установить имена тегов HTML в виде массива при передаче скрытого первичного ключа для идентификации каждой строки и, следовательно, обновления этой конкретной строки.

Помимо циклов foreach и for для перебора результатов массива, но безуспешно, строки MySQL не обновляются.

файл modal.php:

<div class = "form-group">
                  <label>Recipe name</label>
                  <input type = "text" class = "form-control" name = "recipe_name" value = "<?php echo $row['recipe_name']; ?>" />
                </div> 
                <div class = "form-group">
                  <label>Crop</label>
                  <input type = "text" class = "form-control" name = "recipe_crop" value = "<?php echo $row['recipe_crop']; ?>" />
                </div> 

<?php 
                $query1 = mysqli_query($mysqli,"SELECT * FROM recipes WHERE recipe_name = '" . $row['recipe_name'] . "' AND recipe_crop = '" . $row['recipe_crop'] . "';");
                while ($row2 = mysqli_fetch_array($query1)){            
              ?>
              <input type = "hidden" name = "recipe_id[]" value = "<?php $row2['recipe_id']; ?>" readonly>
                <hr />
                <div class = "form-group">
                  <label>Hardware</label>
                  <select name = "hardware[]" class = "form-control">
                    <option value = "<?php echo $row2['recipe_hardware']; ?>">CURRENTLY: <?php echo $row2['recipe_hardware']; ?></option>
                    <option value = "LIGHTS">LIGHTS</option>
                    <option value = "WATER_PUMP">WATER PUMP</option>
                  </select>
                </div>
                <div class = "form-group">
                  <label>Action</label>
                  <select name = "action[]" class = "form-control">
                    <option value = "<?php echo $row2['recipe_action']; ?>">CURRENTLY: <?php echo $row2['recipe_action']; ?></option>
                    <option value = "ON">ON</option>
                    <option value = "OFF">OFF</option>
                  </select>
                </div>
                <?php } ?>

Код обновления PHP:

$rid = $_POST['recipe_id'];
$recipe_hardware = $_POST['hardware'];
$recipe_action = $_POST['action'];
foreach ($rid as $key => $id) {
                $sql = "UPDATE recipes SET recipe_hardware = '" . $recipe_hardware[$key] . "', recipe_action = '" . $recipe_action[$key] . "' WHERE recipe_id = '" . $id . "';";
                $query1 = $this->db_connection->query($sql);
                if ($query1) {

                    $this->messages[] = "Recipe edited successfully.";

                } else {
                    $this->errors[] = "Recipe not updated.";
                }
            }

Ожидаемый результат - возможность обновлять только указанные строки.

Я предполагаю, что столбец recipe_id имеет тип данных int, но в вашем обновлении SQL у вас есть WHERE recipe_id = '" . $id . "'. Эти одинарные кавычки (') вокруг $id преобразуют его как строку. Должно быть: WHERE recipe_id = " . (int) $id . "

Dominic 09.01.2019 11:24

Кстати, я настоятельно рекомендую вам изучить подготовленные заявления для вашего SQL.

Dominic 09.01.2019 11:25

Привет, Доминик, спасибо за быстрый ответ, я пытался изменить его на «. (Int) $ id.», Но, к сожалению, все равно не сработало. Обязательно ознакомлюсь с подготовленной выпиской! Спасибо за совет.

Qusai 09.01.2019 11:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
28
0

Другие вопросы по теме