PHP4 + MySQL
Недавно впервые (к глубокому сожалению) дошли руки до изучения свойства 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
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Возможно
А кто мешает использовать update? :)
LONGOBARD, совесть мешает. Если не в курсе как помочь — зачем отвечаешь? Про Update я как-то и сам в курсе. Главный вопрос — как определить название и тип поля в скрипте, который сканирует все таблицы?
в MySQL Tuturial, который в info mysql, предлагают пользоваться конструкциями:
`SHOW TABLES’, и `DESCRIBE table-name’.
KIVagant, читай доки, ок?
rgo, спасибо за конкретный ответ. Хоть один человек в тему сказал. Поищу в доках указанные конструкции — хоть ясно куда копать.
myst, постараюсь. Сколько там страниц доков по mysql в интернете?.. Ну почему, если задается вопрос, то обязательно отвечают так, чтоб пришлось повторить этот же вопрос ещё 3-4 раза?…
forum.php.ru, совет пользователя 440hz:
[
написать скриптик который:
1. переберет все таблицы.
2. просмотрит все текстовые поля.
3. заменит в записях кавычки.
где не понятно?
]
Опупенно аккуратная интерпретация моего же вопроса мне… Что-то вроде:
- «Как мне открыть дверь, если ключ не поворачивается в замке?»
- «Тебе нужно: 1. Достать ключ; 2. Вставить ключ в замок; 3. Повернуть ключ в замке и открыть дверь;»…
дампишь базу
меняешь в дампе что и как надо
восстанавливаешь базу их подкорректированного дампа
индексы останутся на месте.
Genie, что-то такому простому решению я не додумался. Правда нужно будет аккуратно дамп обрабатывать. А то нечаянно можно лишнее удалить и испортить все. Спасибо, нужно будет попробовать.