Ошибка синтаксиса SQL при использовании preg_split («/, /»,

0

Я использовал preg_split, чтобы удалить информацию о теге из твитового идентификатора сообщения, например, это оригинальный вывод из Twitter

тег: search.twitter.com, 2005: 7551711354822656

Я применяю preg_split, чтобы избавиться от тега: search.twitter.com, например

  $arr = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->id))");
  $msg_ID =  $arr[1];

& вставьте $msg_ID [1] в таблицу. Теперь я применяю то же самое к сообщению-содержимому, чей твиттер-выход

  #DIYse_D  DELIVERAB: twitter messages 1, 9th OCT 2010

Я применяю preg_split, чтобы избавиться от 'твиттер-сообщений 1' от него, например

  $arr2 = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->content))");
  $msg =  $arr[1];

& вставьте $msg [1] в таблицу, но он вызывает синтаксическую ошибку sql. ОК, одна вещь здесь заключается в том, что в $status- > id output, твиттер добавил тег в начале id, а здесь он добавил "сообщения Twitter 1" внутри исходного содержимого сообщения.
Вот запрос SQL Insert

INSERT INTO msg2(id,msg,msg_id,depth,name) VALUES ('','$msg','$msg_ID','0','$name')
  • 0
    Не могли бы вы добавить свои команды SQL?
  • 0
    @thejh, я добавил SQL-оператор вставки в OP
Показать ещё 1 комментарий
Теги:
twitter
preg-split

1 ответ

2
Лучший ответ
$arr = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->id))");
                         ^--here                                           ^--here
$arr2 = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->content))");
                           ^---here                                              ^---here

Четыре двойных кавычки, которые я указал, превращают эти биты "кода" в буквальные текстовые строки. Вы не пытаетесь разделить результаты вызова функции strip_tags, вы пытаетесь разбить строку, которая говорит "strip_tags (etc...)". Удалите двойные кавычки, чтобы PHP увидел, что это вызов функции, а не строка.

Поскольку в этой литеральной строке нет запятых, не будет никакого значения $arr2[1], поэтому вы пытаетесь вставить пустую (или нуль) в базу данных.

Также измените свою функциональную последовательность на:

mysql_real_escape_string(strip_tags(etc...))

Сброс для вставки базы данных должен быть последним, что вы делаете перед вставкой. Возможно, strip_tags может изменить порядок экранов и создать "плохую" строку, оставив вас открытыми для SQL-инъекций.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню