@ mpm уже ответил на ваш вопрос, но ваш код уязвим для SQL Injection . Это очень серьезная уязвимость вашего веб-сайта, поскольку злоумышленники могут использовать ее для чтения всей вашей базы данных.
Более подробная информация здесь: https://owasp.org/www-community/attacks/SQL_Injection
Важное Дело в том, что пользователь может управлять переменной $ id, которую вы используете в $query = mysqli_query("SELECT * FROM `main_img` WHERE `id`='$id'");
. Таким образом, злоумышленник может изменить запрос в этой точке. Например, он мог бы использовать полезную нагрузку ' UNION SELECT * FROM users
для добавления всей пользовательской информации (пароли, адреса электронной почты и т. Д. c.) К выходным данным вашего веб-сайта.
Есть несколько способов предотвратить это, но самый простой заключается в использовании подготовленных операторов. Это выглядит примерно так:
$stmt = $dbConnection->prepare("SELECT * FROM `main_img` WHERE `id`=?");
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();
while($row = mysqli_fetch_assoc($query)) {
// ...
}
Таким образом вы убедитесь, что MySQL не интерпретирует любой ввод пользователя как код SQL, а только как значения.
Опять же, еще подробная информация здесь: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html