Недавно впервые (к глубокому сожалению) дошли руки до изучения свойства magic_quotes_gpc. Оказалось, что я очень давно и очень не правильно использовал функции addslashes() и stripslashes(). Из-за того, что в php.ini свойство magic_quotes_gpc было равно On, я загонял в БД данные, с лишними знаками "\". Теперь, разобравшися с всем этим механизмом работы добавления и убирания \", решил отключить magic_quotes_gpc, заменить все addslashes() на mysql_real_escape_string() и поудалять из кода все stripslashes(). С помощью Rapid PHP 2005 это заняло не более 2х минут. Теперь все входящие в БД данные экранируются, но возникла проблема - что делать с всеми данными, которые уже были загнаны в БД вместе с лишними знаками "\"? Особенно если учесть, что используется свой аналог ВВ-тегов, в которых кавычки - сплошь и рядом и теперь все они не работают правильно и повсюду в текстах вижу \"текст\", \'текст\' и т.п.. У меня в базе - 80 таблиц, CMS установлена у нескольких клиентов, плюс мой локальный тестовый экземпляр. Вручную перебирать все базы - слишком долгий и ненадежный процесс. Следовательно, вопрос: возможно ли написать скрипт, который смог бы пройтись по таблицам (по списку из массива), найти все поля с типом text, longtext, varchar, циклически получить данные из этих полей, пропустить их через функцию stripslashes() и загнать обратно, не нарушая индексацию (autoincrement)? Оптимизация скорости работы этого скрипта мне не особо интересна, это нужно будет сделать только один раз. Заранее благодарен за любые конструктивные предложения по решению этой траблы... ICQ: 55055888
Nimous, спасибо за мудрый совет... А топик прочитать? Мне нужно избавиться от stripslashes(), т.к. при правильной настройке php эта функция вообще не нужна. А если изначально были включены магические кавычки, то теперь их невозможно выключить, т.к. это порождает одну из двух проблем: если stripslashes оставить, то все новые сообщения, содержащие знак " \ " будут выводится неправильно. Например, юзеры не смогут указать путь C:\aaa\bbb\, т.к. система выведет это как C:aaabbb А если stripslashes убрать, то во всех старых сообщениях и вообще текстовых полях будут глюки с выводом данных из-за лишних "\".
KIVagant написать скриптик который: 1. переберет все таблицы. 2. просмотрит все текстовые поля. 3. заменит в записях кавычки. где не понятно?
440hz, все правильно. Вопрос именно в том, КАК написать такой скриптик. Всем спасибо, на http://www.nixp.ru/ я уже получил ответ на этот вопрос, а точнее точное направление для поиска.