Ошибка при попытке выбрать из таблицы базы данных, где user_id = $ _SESSION ['id'] - PullRequest
0 голосов
/ 05 февраля 2019

Я видел, что есть много сообщений об этой ошибке, но я не могу найти ответ для моей конкретной проблемы.Я пытаюсь показать таблицу для пользователя, но только если он вошел в систему, и только если строка таблицы добавлена ​​этим конкретным пользователем. Итак, я пытаюсь использовать эту строку:

$sql = "SELECT * FROM data WHERE id_user = $_SESSION['id']";
$result = mysqli_query($connect, $sql);

И я получаю эту ошибку:

"Синтаксическая ошибка, неожиданная '' (T_ENCAPSED_AND_WHITESPACE), ожидающая '-' или идентификатор (T_STRING) или переменная (T_VARIABLE) или число (T_NUM_STRING)"

Кроме того, я попытался

$sql = "SELECT * FROM 'data' WHERE 'id_user' = '$_SESSION['id']'";

Обратите внимание на '' вокруг имени таблицы и переменных

Что изменить, чтобы синтаксис был хорошим

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Не делайте так, используйте готовое утверждение:

$sql = "SELECT * FROM data WHERE id_user = ?";
$stmt = mysqli_prepare($link, $sql);
mysqli_stmt_bind_param($stmt, "i", $_SESSION['id']);
mysqli_stmt_execute($stmt);

Более подробную информацию можно найти здесь: https://secure.php.net/manual/en/mysqli.prepare.php

Требуется некоторое привыкание, и этоможет быть немного более многословным (вы можете обернуть это в свой собственный класс или функции), но это будет намного безопаснее и более переносимо.

Не говоря уже о том, что вы можете похвастаться перед друзьями тем, что по умолчанию используете готовые заявления!

0 голосов
/ 05 февраля 2019

измените ваш запрос на:

$sql = "SELECT * FROM data WHERE id_user = ". $_SESSION['id'];

Это может работать для вас на данный момент, но вы должны изменить свой запрос, так как ваш запрос открыт для SQL-инъекции.

Использовать подготовленныйзаявление для построения вашего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...