#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) ."' ";