petyr Ответов: 1

Php вставляет и обновляет mysql с ограничением в три строки


У меня есть php-скрипт, который записывает входные данные из формы в таблицу базы данных mysql. Мне нужна ссылка только на последние три входа. Чтобы избежать заполнения таблицы входными данными, я ищу способ вставить эти данные до тех пор, пока не будут созданы 3 строки, после чего он должен обновить существующие строки так, чтобы первая обновилась до нового входа, вторая-до прежнего первого входа и третья-до прежнего второго входа. Как я могу это сделать?

Что я уже пробовал:

я пытался:
$q = "select value from inputs where userid = '$userid' and name = 'input' order by id desc";
$result = mysqli_query($conn, $q);
для первых трех строк я могу использовать:
if(mysqli_num_rows($result) < 4) {
	$q = "insert into inputs (userid,name,value) values ('$userid','input','$value')";
}
после чего он должен стать:
else {
	$q = "update inputs set value = '$value' where userid = '$userid' and name = 'input' limit 3";
}
где он должен обновить все последовательные строки

1 Ответов

Рейтинг:
2

Patrice T

$q = "select value from inputs where userid = '$userid' and name = 'input' order by id desc";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL Injection-руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL-OWASP[^]