У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB

0

Я пытаюсь обновить строку в 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

Любая помощь будет глубоко оценена

  • 0
    нам нужно знать полную ошибку.
  • 0
    О, я знаю, что это, хе. Очень просто здесь; вы выполнили один и тот же запрос дважды, и вы, скорее всего, вернули «1» в качестве ошибки, верно? Редактировать: хе, знал это ;-)
Показать ещё 4 комментария
Теги:

1 ответ

3
Лучший ответ

(См. Редактирование в нижней части).

Здесь произошло то, что вы дважды выполнили тот же запрос для 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'];

Идентификатор должен быть назначен "в" строке, а не наоборот.

Я не видел этого, мой плохой. Хороший улов на этом.

  • 0
    спасибо, ошибка ушла, но запись не обновляется
  • 0
    @ScofLj Добро пожаловать. Посмотрите, что mysqli_error($con); показывает тогда. Если это не выдает ошибку, то ваш запрос мог молча провалиться. Одной из возможных причин может быть неправильный тип данных или слишком короткая длина столбца. Могут быть и другие факторы.
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню