Я пытаюсь обновить строку в mysql, однако каждый раз ошибка 1024
@$name= $_POST['name'];
@$bio=$_POST['bio'];
@$email=$_POST['email'];
if(!empty($_POST['name']) && !empty($_POST['bio']) && !empty($_POST['email']) )
{
$result="SELECT * FROM accounts where email='$email'";
$row = mysqli_fetch_array(mysqli_query($con,$result),MYSQLI_ASSOC);
$row['id']=$id;
$Sql_Query = mysqli_query($con,"UPDATE profile SET name= '$name', bio = '$bio' WHERE id = '$id'");
if(mysqli_query($con,$Sql_Query)){
echo 'Record Updated Successfully';
}
else{
echo 'Something went wrong, whether id is not present or something else'.mysqli_error($con);
}
}else
{
echo 'missing parameters';
}
ошибка
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с "1" в строке 1
Любая помощь будет глубоко оценена
(См. Редактирование в нижней части).
Здесь произошло то, что вы дважды выполнили тот же запрос для UPDATE, и ошибка, которую вы должны получить, - это "1". (Это перед редактированием).
Измените
$Sql_Query = mysqli_query($con,"UPDATE profile SET name= '$name', bio = '$bio' WHERE id = '$id'");
// ^^^^^^^^^^^^^^^^^
if(mysqli_query($con,$Sql_Query)){
// ^^^^^^^^^^^^^^^^^
echo 'Record Updated Successfully';
}
чтобы просто
if($Sql_Query){
echo 'Record Updated Successfully';
}
и использовать подготовленный оператор, чтобы помочь в SQL-инъекции.
В соответствии с вашими изменениями, где вы добавили:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с "1" в строке 1
... это то, что я подозревал и опубликовал в комментарии ранее.
Кстати; эти символы @
являются подавителями ошибок и должны быть удалены во время разработки.
Использование отчетов об ошибках PHP помогло бы в определенной степени, но не для тех переменных, которые были изменены для массивов POST, если у них что-то не так.
Редактировать:
Как указано в комментарии, предоставленном IncredibleHat, эта строка:
$row['id']=$id;
обращается вспять и должно быть записано как:
$id = $row['id'];
Идентификатор должен быть назначен "в" строке, а не наоборот.
Я не видел этого, мой плохой. Хороший улов на этом.
mysqli_error($con);
показывает тогда. Если это не выдает ошибку, то ваш запрос мог молча провалиться. Одной из возможных причин может быть неправильный тип данных или слишком короткая длина столбца. Могут быть и другие факторы.