#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 без очистки. Очистите и параметрируйте свой запрос.