не может сформировать правильную строку - PullRequest
0 голосов
/ 12 марта 2011

У меня есть следующий код для создания SQL-запроса

$sql= '(SELECT ticket_id,message,created,2 from '.TICKET_MESSAGE_TABLE.' msg where msg.ticket_id ='.db_input($id).' ) UNION (SELECT ticket_id,response,created,1 from '.TICKET_RESPONSE_TABLE.' resp where resp.ticket_id= '.db_input($id).' )UNION (SELECT ticket_id,note,created,3 FROM '.TICKET_NOTE-TABLE .' note WHERE note.ticket_id='.db_input($id).' ) order by created';

echo "sql:  ".$sql;

когда я запускаю это, я получаю

sql: 0 note WHERE note.ticket_id=2 ) order by created

Может кто-нибудь объяснить, откуда берется 0 и почему строка сформирована неправильно.

Спасибо

1 Ответ

0 голосов
/ 12 марта 2011

TICKET_NOTE-TABLE

Это было бы легче заметить, если бы вы завернули свой вклад каким-то вменяемым образом:)

$sql= '(SELECT ticket_id,message,created,2 from '.TICKET_MESSAGE_TABLE.
      ' msg where msg.ticket_id ='.db_input($id).
      ' ) UNION (SELECT ticket_id,response,created,1 from '.TICKET_RESPONSE_TABLE.
      ' resp where resp.ticket_id= '.db_input($id).
      ' )UNION (SELECT ticket_id,note,created,3 FROM '.TICKET_NOTE-TABLE .
      ' note WHERE note.ticket_id='.db_input($id).
      ' ) order by created';

echo "sql:  ".$sql;

Кроме того, я надеюсь, что функция db_input() предназначена для предотвращения атак SQL-инъекций . И я надеюсь, что это хорошо реализовано. (Я думаю, что использовать подготовленные выражения проще и более разборчиво.)

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