|
|
|
| Вот такой код отлично исполняется и данные успешно заносятся в таблицу:
$query = "INSERT INTO bot (namebot) VALUES ('TESTtesT')";
mysql_query($query);
echo mysql_errno()." 57 : ".mysql_error()."<BR>";
|
А вот такой код
$mass_bot = file("user_agents.txt"); // Преобразуем список в массив
$pak_bot = serialize ($mass_bot);
echo "<BR>", htmlspecialchars($pak_bot);
$query = "INSERT INTO bot (namebot) VALUES ('$pak_bot')";
mysql_query($query);
echo "<BR><BR>", mysql_errno()." 57 : ".mysql_error()."<BR>";
| выводит диагностику:
1064 57 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's ";i:233;s:6:"Zeus ";i:234;s:14 и т.п.
|
Что, впрочем, неудивительно, если посмотреть содержимое переменной $pak_bot . А оно такое (начало):
a:250:{i:0;s:18:"FAST-WebCrawler/ ";i:1;s:12:"SlySearch/ ";i:2;s:32:"Mozilla/4.0 compatible ZyBorg/ ";i:3;s:10:"Scooter- ";i:4;s:9:"Yandex/ ";i:5;s:14:"StackRambler ";i:6;s:7.....
|
А как решить эту проблему? И можно ли её решить вообще? | |
|
|
|
|
|
|
|
для: Владимир55
(03.02.2009 в 17:06)
| | забыли применить mysql_escape_string() перед тем, как окружить текст апострофами. | |
|
|
|
|
|
|
|
для: Владимир55
(03.02.2009 в 17:06)
| | > You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's ";i:233;s:6:"Zeus ";i:234;s:14
> Что, впрочем, неудивительно, если посмотреть содержимое переменной $pak_bot
Чем для Вас неудивительна ошибка? | |
|
|
|
|
|
|
|
для: BinLaden
(03.02.2009 в 17:28)
| | Тем, что в переменной поток служебных знаков. По сути - инъекция.
Рекомендация Trianon
$text = mysql_escape_string($text);
| решила проблему.
Спасибо! | |
|
|
|
|
|
|
|
для: Владимир55
(03.02.2009 в 17:38)
| | Инъекция это не простой поток служебных занков.
Инъекция - это строка, в которую включены кавычки, причем точно такие же, какие использовались при окружении аргумента, ... ну и хвост кода между ними. Но в процитированном Вами фрагменте таких символов нет. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2009 в 17:41)
| | Но это я сделал верно?
$text = mysql_escape_string($text);
|
Или надо что-то сверх этого? | |
|
|
|
|
|
|
|
для: Владимир55
(03.02.2009 в 17:44)
| | верно | |
|
|
|