Команда SQL не вызывает конкретный запрос - PullRequest
1 голос
/ 27 октября 2011

У меня есть 2 таблицы: одна с ответами, вторая с добавленными друзьями. Обе таблицы имеют поля идентификаторов друга (получателя) и постера ответа. Я внутренне присоединяюсь к этим таблицам на receive_id и add_friend, где имя пользователя в 'friends' равно $ _SESSION ['user'] (зарегистрированный человек). Все, что я получаю после запроса, это просто ответы (обе стороны видят их) и не может запросить ответ обратно (обе стороны не могут видеть ответы другой стороны), почему это так? Код кажется логичным ... Большое спасибо.

   CREATE TABLE IF NOT EXISTS `friends` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(128) character set utf8 NOT NULL,
  `added_friend` varchar(128) character set utf8 NOT NULL,
  `friendname` varchar(128) character set utf8 NOT NULL,
  PRIMARY KEY  (`id`)
  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

   --

  CREATE TABLE IF NOT EXISTS `reply` (
  `rep_id` int(11) NOT NULL auto_increment,
  `reply_comm` text character set utf8 NOT NULL,
  `reply_poster` varchar(128) character set utf8 NOT NULL,
  `reply_poster_id` int(11) NOT NULL,
  `receiver_name` varchar(128) character set utf8 NOT NULL,
  `receiver_id` int(11) NOT NULL,
  `reply_date` date default NULL,
  PRIMARY KEY  (`rep_id`)
  ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;    

Структура выглядит так:

Таблица «Друзья»:

          username | added_friend
          =====================
          mike     | 10
          rob      | 20

Таблица «Ответить»:

          reply_poster | receiver_id
          =========================
          mike     | 20
          rob      | 10  <- added friend id

Команда PHP SQL выглядит так:

        $repcheck2 = mysqli_query($connect,"SELECT * FROM reply INNER JOIN friends ON  
        receiver_id  = added_friend  WHERE username = '".$_SESSION['user']."' ORDER BY rep_id  
        DESC ");

Таким образом, обе стороны должны видеть ответы и сообщения при входе в систему ($ _SESSION ['user']), но не могут видеть ответы только по своим собственным ответам / комментариям. Большое спасибо ...

1 Ответ

0 голосов
/ 27 октября 2011

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

Кроме того, лично я бы сделал запрос следующим образом:

SELECT * FROM `reply`, `friends` WHERE `friends`.`receiver_id`=`reply`.`added_friend` AND `friends`.`username`='".$_SESSION['user']."' ORDER BY `replies`.`rep_id` DESC

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

Не уверен, что это решит вашу проблему, но мы увидим.

Если это неМожете ли вы сказать мне, что он делает вывод?Т.е. выводятся ли какие-либо строки из базы данных или какие-либо ошибки?

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