Фильтрация записей только для зарегистрированных пользователей?

#php #sql

#php #sql

Вопрос:

Я использую следующий запрос для отображения записей путем объединения данных формы с данными изображения.

 SELECT * FROM soccer JOIN soccerimages ON soccer.id = soccerimages.id ORDER BY soccer.id
  

При этом отображаются все записи, данные формы с одним изображением, но как мне отобразить запись только для вошедшего в систему пользователя? Мне нужно сделать это закрытым, чтобы избежать проблем с авторским правом, например, если пользователи загружают изображения с веб-сайтов. Зарегистрированный пользователь сохраняется в переменной сеанса

 $user = $_SESSION['UserName'];
  

Я устал

 SELECT * FROM tcgsoccer JOIN tcgsoccerimages ON tcgsoccer.id = tcgsoccerimages.id ORDER BY tcgsoccer.id `WHERE '$user'='$user'`
  

Но я получаю синтаксические ошибки. Я не понимаю, как структурировать запрос? Я тестирую его в phpmyadmin, поэтому удалил ;

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

1. Удалите кавычки для первого ($user) WHERE '$user'='$user' , поэтому WHERE user='$user' предположим user , что это ваше имя столбца.

2. Переменная сеанса $user не является. Я объединил таблицы по их идентификаторам столбцов.

3. создайте хранимую процедуру, которая принимает @user в качестве переменной, вызовите хранимую процедуру из вашего php-кода, передав $user в качестве параметра.

4. Синтаксис WHERE column = 'something' $user это не столбец, это переменная, и столбец не должен быть заключен в кавычки. Здесь => tutorialspoint.com/mysql/mysql-where-clause.htm — Добавление отчетов об ошибках в начало вашего файла (файлов) error_reporting(E_ALL); ini_set('display_errors', 1); сигнализировало бы об ошибке.

5. Я использую сообщение об ошибке error_reporting (E_ERROR); Я не знаю, как структурировать запрос.

Ответ №1:

 $query = "SELECT * 
FROM tcgsoccer 
    JOIN tcgsoccerimages ON tcgsoccer.id = tcgsoccerimages.id 
        ORDER BY tcgsoccer.id 
WHERE user = '" . $user ."'";
  

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

1. Это дает «У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘WHERE user = «‘ в строке 2». Я также удалил пробелы, но это выдало ту же ошибку.