Я получаю ошибку
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с 'WHERE userId =' 6 '' в строке 1
При запросе этих строк:
$query = 'SELECT * FROM post ORDER BY created DESC ';
$query .= 'WHERE userId = \'' . mysqli_real_escape_string($db, $userId) . '\'';
Не удается найти решение. Нужно ли менять столбцы для db или синтаксиса?
Ошибка из-за использования WHERE
после ORDER BY
. Правильный запрос должен быть таким:
$query = 'SELECT * FROM post WHERE userId = "' . mysqli_real_escape_string($db, $userId) . '" ORDER BY created DESC';
Несколько ошибок с вашим запросом:
$query = 'SELECT * FROM post ORDER BY created DESC ';
ORDER BY следует после WHERE в потоке синтаксиса, поэтому указание WHERE после ORDER BY является синтаксической ошибкой (то, что вы получаете)
$ query. = 'WHERE userId = \' '. mysqli_real_escape_string ($ db, $ userId). '\' ';
Фактически вы не используете параметризованные запросы. Познакомиться с ними и использовать их, mysqli_real_escape_string
- это только бандайда для использования правильных параметров.
Вы сравниваете идентификатор пользователя (предположительно целое число) с использованием нотации строк. Это бессмысленно и может привести к нежелательным результатам. Целые числа не обязательно должны быть заключены в кавычки в SQL.
"Восстановленный" код для вашего запроса (по-прежнему смотрите, как параметризовать):
$query = 'SELECT * FROM post WHERE userID = '.mysqli_real_escape_string($db, $userId).' ORDER BY created DESC';
используйте ORDER BY после WHERE. в запросе
<?php
$query = 'SELECT * FROM post';
$query .= ' WHERE userId = "' . mysqli_real_escape_string($db, $userId) . '"';
$query .= ' ORDER BY created DESC';
?>
Вы даже пытались повторить запрос? Вы не увидите места между DESCWHERE
.
Переместите ORDER BY
до конца.
SELECT whatever FROM wherever WHERE whatever ORDER BY whatever
Кроме того, прочитайте в PDO и подготовленных инструкциях, что код уязвим для SQL-инъекции. https://phpdelusions.net/pdo
WHERE
перед предложениемORDER BY
$query = 'SELECT * FROM post '; $query .= 'WHERE userId = \'' . mysqli_real_escape_string($db, $userId) . '\''; $query .= ' ORDER BY created DESC'
;