Проблема с моим while и моим запросом массива sqli

#php #mysqli

#php #mysqli

Вопрос:

Я начинающий php, и я не хочу создавать свой проект. Вот моя проблема: я создаю скрипт, который обновляет информацию на моем сервере sqli, но возникает странная проблема. Он не хочет обновляться без всякой причины.

Мой код:

 <?php

                    $itemchoice = array(
                        'value' => array( '', "1" => $item1, "2" => $item2, "3" => $item3, "4" => $item4, "5" => $item5),
                        'name' => array('', "1" => "item1name", "2" => "item2name", "3" => "item3name", "4" => "item4name", "5" => "item5name"),
                    );

                    $nombre_actuel = 1;

                    echo '<form method="post">';
                    while ($nombre_actuel <= $nombredeligne)
                    {
                        echo '<input type="text" name="'.$itemchoice['name'][$nombre_actuel].'" value="'.$itemchoice['value'][$nombre_actuel].'">';
                        $nombre_actuel  ;
                    }
                    echo '<input type="submit" name="envoyer" value="Envoyer">';
                    echo '</form>';

                    if (isset($_POST['item1name'])) {
                        $newitem1 = $_POST['item1name'];
                        $newitem1sql = 'UPDATE navbar SET valeur='.$newitem1.' WHERE item="item1" ';
                        $newitem1result = mysqli_query($db1, $newitem1sql);
                    }
  

Линия

  $newitem1sql = 'UPDATE navbar SET valeur='.$newitem1.' WHERE item="item1" ';
  

Не работает ни по какой причине

Комментарии:

1. Что вы подразумеваете под «не работает»? Где вы проверяете наличие ошибок? Почему вы используете полностью не заключенные в кавычки входные данные?

2. Предупреждение: вы широко открыты для SQL-инъекций и должны действительно использовать параметризованные подготовленные инструкции вместо того, чтобы вручную создавать свои запросы. Они предоставляются PDO или MySQLi . Никогда не доверяйте никаким входным данным, особенно тем, которые поступают со стороны клиента. Даже если ваши запросы выполняются только доверенными пользователями, вы все равно рискуете повредить свои данные .

3. if (isset($_POST[‘item1name’])) { ….. } никогда не будет выполнено, потому что ‘item1name’ нигде не определено / не используется. Может быть, я этого не видел. Еще один момент: вы пытаетесь обновить запись, поэтому она должна существовать в вашей базе данных.

Ответ №1:

Измените эту строку:

 $newitem1sql = 'UPDATE navbar SET valeur='.$newitem1.' WHERE item="item1" ';
  

к этому:

 $newitem1sql = 'UPDATE navbar SET valeur="'.$newitem1.'" WHERE item="item1" ';
  

Примечание: вы открыты для атаки с использованием SQL-инъекций. Вы не должны просто брать ввод $_Post[] и вставлять его в свой SQL без очистки. Очистите и параметрируйте свой запрос.