Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Таблица принимает не все данные. Как быть?
 
 автор: Владимир55   (03.02.2009 в 17:06)   письмо автору
 
 

Вот такой код отлично исполняется и данные успешно заносятся в таблицу:
        $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.....


А как решить эту проблему? И можно ли её решить вообще?

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:09)   письмо автору
 
   для: Владимир55   (03.02.2009 в 17:06)
 

забыли применить mysql_escape_string() перед тем, как окружить текст апострофами.

  Ответить  
 
 автор: BinLaden   (03.02.2009 в 17:28)   письмо автору
 
   для: Владимир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

Чем для Вас неудивительна ошибка?

  Ответить  
 
 автор: Владимир55   (03.02.2009 в 17:38)   письмо автору
 
   для: BinLaden   (03.02.2009 в 17:28)
 

Тем, что в переменной поток служебных знаков. По сути - инъекция.

Рекомендация Trianon
$text = mysql_escape_string($text);  
решила проблему.
Спасибо!

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:41)   письмо автору
 
   для: Владимир55   (03.02.2009 в 17:38)
 

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

  Ответить  
 
 автор: Владимир55   (03.02.2009 в 17:44)   письмо автору
 
   для: Trianon   (03.02.2009 в 17:41)
 

Но это я сделал верно?
$text = mysql_escape_string($text);  


Или надо что-то сверх этого?

  Ответить  
 
 автор: Trianon   (03.02.2009 в 17:45)   письмо автору
 
   для: Владимир55   (03.02.2009 в 17:44)
 

верно

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования