2015-01-02 6 views
-2

У меня есть поле для комментариев, где пользователи могут отправлять вопросы и отвечать друг другу.Mysql LEFT JOIN remover

в $ строка выглядит следующим образом:

$posts_sql = "SELECT * FROM posts LEFT JOIN users ON posts.post_by = users.user_id WHERE posts.post_topic = " . mysql_real_escape_string($_GET['id']); 

Это то, что он получает после того, как они говорят друг друга в поле: «Что я могу вам помочь»

Пользователь 1 пишет.
Пользователь 2 отвечает «Nothing Special».
Пользователь 3 говорит: «Ладно, добро пожаловать назад».

Пользователь 1 ответ еще раз на ответ Пользователь 2 только что дал, но этот второй комментарий Пользователь 1 сделал снова прямо в начало страницы, пропустив ответ пользователя 2 и положил комментарий на него. Например:

Пользователь 1: Чем я могу вам помочь?
Пользователь 1: Хорошо, добро пожаловать.
Пользователь 2: Ничего особенного.

Я хочу, чтобы это было так: User 1: Чем я могу вам помочь?
Пользователь 2: Ничего особенного.
Пользователь 1: Хорошо, добро пожаловать.

Я не знаю, как удалить LEFT JOIN пользователей ПО (я предполагаю, что это скрипт, который делает это)

Я хочу, чтобы это было: ORDER BY POST_DATE DESC, комментарий после комментария, не перемещая Имя пользователя-х ID, чтобы придерживаться его.

Как я могу изменить следующий код, чтобы сделать его правильным?

$posts_sql = "SELECT * FROM posts LEFT JOIN users ON posts.post_by = users.user_id WHERE posts.post_topic = " . mysql_real_escape_string($_GET['id']); 

Я надеюсь, что я был достаточно конкретным, пожалуйста, дайте мне знать, если есть все, что нужно знать о таблице или коде.

+0

Вам больше не следует использовать функции mysql _ *(), и ваш код по-прежнему небезопасен. что остановить кого-нибудь из 'example.com/foo.php? id = posts.posts_topic' и получить ВСЕ сообщения в вашем db? Это может быть экранировано, но вы все еще уязвимы для SQL-инъекций. –

+0

Вы храните временную метку? возможно, вы можете заказать их к тому времени. – dgig

+0

Итак, если добавить таблицу времени в таблицу, как ее вставить в строку? – user3165668

ответ

0

Левое присоединиться ссылки дружественное имя пользователя с сообщением, так что дисплей может быть

User 1: What can I help you with? 

Без присоединиться все, что вы могли бы показать это user'd ID

1143245: What can I help you with?` 

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

$posts_sql = "SELECT * FROM posts LEFT JOIN users\ 
       ON posts.post_by = users.user_id\ 
       WHERE posts.post_topic = ". 
       mysql_real_escape_string($_GET['id']). 
       " ORDER BY post_date"; 

Отказ от ответственности: Обычные предостережения о защите от инъекции SQL, манипуляций URL, обновления до Mysqli применить. Но если вы хотите стрелять в ногу, я не остановлю вас.