Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
viperdev пишет:
Спасибо большое за помощь всем, помогло mysql_real_escape_string, только появилась другая проблема в базу пишется только половина информации, а объем ее всего 60 килобайт, как с этим быть?
Пожалуйста! Не забывайте что данные необходимо экранировать всегда Насчет ограничения на размер данных записываемых в БД - какого типа у вас записываемое поле? (Проблема могла быть еще в наличии спецсимволов - но мы их старательно проэкранировали)
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ALEN
Отправлено: 21 Апреля, 2010 - 10:35:43
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
JustUserR
Так вот я пример и описал выше, чтоб люди поняли страшную силу кавычек!
viperdev
Отправлено: 21 Апреля, 2010 - 10:42:47
Новичок
Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
JustUserR пишет:
viperdev пишет:
Спасибо большое за помощь всем, помогло mysql_real_escape_string, только появилась другая проблема в базу пишется только половина информации, а объем ее всего 60 килобайт, как с этим быть?
Пожалуйста! Не забывайте что данные необходимо экранировать всегда Насчет ограничения на размер данных записываемых в БД - какого типа у вас записываемое поле? (Проблема могла быть еще в наличии спецсимволов - но мы их старательно проэкранировали)
Тип поля text, та часть информации которая записалась в бд, записалась идеально, пробовал на нормальном сервере т.е. не на денвере то же самое получается.
JustUserR
Отправлено: 21 Апреля, 2010 - 13:48:14
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ALEN пишет:
JustUserR Так вот я пример и описал выше, чтоб люди поняли страшную силу кавычек!
Да кавычки это важное дело - особенно когда дело заходит о нескольких уровнях вложенности и экранироваия
viperdev пишет:
Тип поля text, та часть информации которая записалась в бд, записалась идеально, пробовал на нормальном сервере т.е. не на денвере то же самое получается.
Попробуйте использовать LONGTEXT или MEDIUMBLOB (Это может быть особенно полезно если вы не хотите заботиться о кодировке данных в БД)
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
viperdev
Отправлено: 21 Апреля, 2010 - 15:21:44
Новичок
Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
JustUserR пишет:
ALEN пишет:
JustUserR Так вот я пример и описал выше, чтоб люди поняли страшную силу кавычек!
Да кавычки это важное дело - особенно когда дело заходит о нескольких уровнях вложенности и экранироваия
viperdev пишет:
Тип поля text, та часть информации которая записалась в бд, записалась идеально, пробовал на нормальном сервере т.е. не на денвере то же самое получается.
Попробуйте использовать LONGTEXT или MEDIUMBLOB (Это может быть особенно полезно если вы не хотите заботиться о кодировке данных в БД)
Не помогает, все равно записывается только часть данных.
JustUserR
Отправлено: 21 Апреля, 2010 - 17:05:38
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
viperdev пишет:
Не помогает, все равно записывается только часть данных.
Судя по всему в записываемых данных встречается такой символ который не может быть записан при данных условиях - либо при экранировании и проверке строки запрос образается Такая проблема также может возникать если функция mysql_real_escape_string убирает символы многобайтовой кодировки которые не подходят под текущее соединение
Попробуйте просто вывести на экран SQL-запрос и посмотреть что отправляется на сервер БД на самом деле
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
viperdev
Отправлено: 22 Апреля, 2010 - 01:40:33
Новичок
Покинул форум
Сообщений всего: 54
Дата рег-ции: Янв. 2010
Помог: 0 раз(а)
JustUserR пишет:
viperdev пишет:
Не помогает, все равно записывается только часть данных.
Судя по всему в записываемых данных встречается такой символ который не может быть записан при данных условиях - либо при экранировании и проверке строки запрос образается Такая проблема также может возникать если функция mysql_real_escape_string убирает символы многобайтовой кодировки которые не подходят под текущее соединение
Попробуйте просто вывести на экран SQL-запрос и посмотреть что отправляется на сервер БД на самом деле
Проблема решилась следующим образом:
перекодировал входящие данные из cp1251 при помощи iconv в utf-8,
заменил в бд поле text на longtext.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
viperdev пишет:
Проблема решилась следующим образом: перекодировал входящие данные из cp1251 при помощи iconv в utf-8, заменил в бд поле text на longtext.
Большое спасибо всем за помощь.
Пожалуйста! Как видите дело действительно оказалось в неправильном экранировании при несовместимостим кодировок -принимаемых и отправляемых данных а также содинения БД и данных в нем
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ALEN
Отправлено: 22 Апреля, 2010 - 16:01:26
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
viperdev пишет:
Не помогает, все равно записывается только часть данных.
Уже давно посоветовал, если что-то не так как хочется при работе в БД, сам запрос выводите на экран - операция займет 2 секунды, но сразу будет видно какие ошибки в запросе. Даже опытным программистам приходится иной раз так поступать не замечая иной раз самые элементарные ошибки.
JustUserR
Отправлено: 23 Апреля, 2010 - 11:19:13
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ALEN пишет:
Уже давно посоветовал, если что-то не так как хочется при работе в БД, сам запрос выводите на экран - операция займет 2 секунды, но сразу будет видно какие ошибки в запросе. Даже опытным программистам приходится иной раз так поступать не замечая иной раз самые элементарные ошибки.
К слову такой способ отладки частенько применяется для CGI-приложений написанный на Perl и тестируемых прямо на web-сервере
Что касается вывода на экран то можно добавить два совета - во-первых выводимые данные обрамлять в дополнительные боковые кавычки (То есть вывод наподобие echo "'$my_data'" ) чтобы узнать путская ли переменная или в ней есть какой-то спецсимвол - и по этой же причине можно смотреть исходный сгенерированный HTML-код чтобы увидеть реально все спецсимволы (Которые могут быть не показаны при HTML-отображении)
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.