Ошибка запроса к базе данных

#php #mysql

#php #mysql

Вопрос:

Я продолжаю получать сообщение о сбое запроса базы данных :: У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ‘WHERE id = 2’ в строке 1, и я, похоже, не могу найти причину. Мой метод вставки пользователя работает нормально, но по какой-то причине я не могу обойти эту ошибку с помощью этого метода обновления:

 public function update(){
  global $database;

  $sql  = "UPDATE users SET ";
  $sql .= "username='"   . $database->escape_value($this->username)   ."', "; 
  $sql .= "password='"   . $database->escape_value($this->password)   ."', "; 
  $sql .= "first_name='" . $database->escape_value($this->first_name) ."', "; 
  $sql .= "last_name='"  . $database->escape_value($this->last_name)  ."', "; 
  $sql .= "WHERE id="    . $database->escape_value($this->id); 
  $database->query($sql);
  if($database->affected_rows() == 1){
     $message = "success";

  }else{
     $message = "no " . mysql_error();
  }
  return $message;
}
  

Комментарии:

1. Какой сбой SQL выдает этот метод?

2. Пожалуйста, укажите, что на самом деле создает код (конечно, очищенный).

3. По крайней мере, изначально я с подозрением отношусь к этой строке : WHERE id=" . Где находится ' вокруг $this->id ?

4. Я не уверен, что понимаю вас, но у меня был метод, который находил пользователя по идентификатору, и другой метод, который обновлял информацию о пользователе. Хотя они работают нормально. Как указал Марк, ошибка была в моем синтаксисе; запятая перед предложением WHERE .

5. @Jarad Я тоже подумал, что это подозрительно, но учебник из lynda.com показывает, что это делается таким образом.

Ответ №1:

Последняя запятая перед WHERE предложением является ошибкой, измените:

 $sql .= "last_name='"  . $database->escape_value($this->last_name)  ."', "; 
  

Для

 $sql .= "last_name='"  . $database->escape_value($this->last_name)  ."' ";