Мне нужна помощь с синтаксической ошибкой SQL.
У меня есть php-код, который должен обновить данные из базы данных, но он дает мне такую ошибку: описание ошибки:у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MariaDB для правильного синтаксиса для использования рядом " в строке 1
Это мой код.:
<pre><?php //initialize variables $Pand =" "; $Naam =" "; $Email =" "; $Huisnummer =" "; $Deel =" "; $id = 0; // connect to database $db = mysqli_connect("xxx","xxx","xxx","xxx"); //update records if (isset($_POST['aanpassen'])) { $Naam = mysqli_real_escape_string($_POST["Naam"]); $Email = mysqli_real_escape_string($_POST["Email"]); $Pand = mysqli_real_escape_string($_POST["Pand"]); $Huisnummer = mysqli_real_escape_string($_POST["Huisnummer"]); $Deel = mysqli_real_escape_string($_POST["Deel"]); $id = mysqli_real_escape_string($_POST["id"]); if (!mysqli_query($db,"UPDATE Info SET Naam= '$Naam' , Email= '$Email' , Pand= '$Pand' , Huisnummer= '$Huisnummer' , Deel= '$Deel' WHERE id=$id")){ echo("Error description:". mysqli_error($db)); } header('location: overzichtlocatie.php'); } // retrieve records $results = mysqli_query($db, "SELECT * FROM Info"); ?>
Что я уже пробовал:
Я уже пробовал такой код:
<pre> <?php // connect to database $db = mysqli_connect("xxx","xxx","xxx","xxx"); //update records if (isset($_POST['aanpassen'])) { $Naam = mysqli_real_escape_string($_POST["Naam"]); $Email = mysqli_real_escape_string($_POST["Email"]); $Pand = mysqli_real_escape_string($_POST["Pand"]); $Huisnummer = mysqli_real_escape_string($_POST["Huisnummer"]); $Deel = mysqli_real_escape_string($_POST["Deel"]); $id = mysqli_real_escape_string($_POST["id"]); if (!mysqli_query($db,"UPDATE Info SET Naam= '$Naam' , Email= '$Email' , Pand= '$Pand' , Huisnummer= '$Huisnummer' , Deel= '$Deel' WHERE id=$id")){ echo("Error description:". mysqli_error($db)); } header('location: overzichtlocatie.php'); } // retrieve records ?>
Richard Deeming
Во-первых, функции "escape string" на самом деле не являются адекватной защитой от SQL-инъекций. Вместо этого следует использовать подготовленные операторы с параметрами.
PHP: SQL-инъекция - руководство пользователя[^]
533578
Я пробовал несколько вещей, и это дает мне эту ошибку до сих пор.. Даже с заранее подготовленными заявлениями.
phil.o
Пожалуйста, используйте зеленый виджет "улучшить вопрос" и квалифицируйте его с помощью подготовленной версии заявления.
Richard Deeming
Во-вторых, вы храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]
533578
Он сделан только для меня и моего учителя. Потому что это для школьного проекта ;)
phil.o
Это не мешает вам делать все правильно :)
533578
Правда, но я только начинаю работать с php, поэтому мне нужно многому научиться. И школа дала мне этот приказ, и никто не может мне помочь, потому что все школы закрыты. Теперь мне нужно спросить людей на таких сайтах, как этот. И я уже 2 дня застрял с этой ошибкой :(
ZurdoDev
Скорее всего, у вас есть ' в одном из ваших полей, вызывающих разрыв вашего sql-оператора. Я не занимаюсь php и mysql, но у w3schools есть хорошая статья о том, как это сделать.
https://www.w3schools.com/php/php_mysql_prepared_statements.asp