[решено] Замена тегов по всей таблице в БД
-
Coutty
[решено] Замена тегов по всей таблице в БД
Здравствуйте!
Помогите, пожалуйста, разобраться с SQL-запросом.
На сайте *.h15.ru стоит форум phpBB2. При импорте в него (командой "Восстановить базу данных") бэкапа локальной базы данных (mySQL4) все скобки тэгов заменились на их html-аналоги. Т.е. было, скажем , а стало . Видимо, это из-за настроек php (там стоит magic_quotes = 1. Точно не помню, как этот параметр называется, но он делает то же самое, что и функция addslashes() в PHP).
В скриптах, которые писал сам, мог ещё добавить при обработке функцию stripslashes(), но в скрипты phpBB вряд ли - не знаю куда. И, в любом случае, массив данных довольно большой, загружать ещё раз не хотелось бы.
Каким sql-запросом можно сделать так:
"найти & l t ; заменить на '
Помогите, пожалуйста, разобраться с SQL-запросом.
На сайте *.h15.ru стоит форум phpBB2. При импорте в него (командой "Восстановить базу данных") бэкапа локальной базы данных (mySQL4) все скобки тэгов заменились на их html-аналоги. Т.е. было, скажем , а стало . Видимо, это из-за настроек php (там стоит magic_quotes = 1. Точно не помню, как этот параметр называется, но он делает то же самое, что и функция addslashes() в PHP).
В скриптах, которые писал сам, мог ещё добавить при обработке функцию stripslashes(), но в скрипты phpBB вряд ли - не знаю куда. И, в любом случае, массив данных довольно большой, загружать ещё раз не хотелось бы.
Каким sql-запросом можно сделать так:
"найти & l t ; заменить на '
-
mar
Re: [решено] Замена тегов по всей таблице в БД
Цитата:
При импорте в него (командой "Восстановить базу данных") бэкапа локальной базы данных
а нельзя залить не командой форума, а по-нормальному, через mysql ? Доступ к консоли есть?
При импорте в него (командой "Восстановить базу данных") бэкапа локальной базы данных
а нельзя залить не командой форума, а по-нормальному, через mysql ? Доступ к консоли есть?
-
Vlad Drakula
Re: [решено] Замена тегов по всей таблице в БД
Coutty
Цитата:
Видимо, это из-за настроек php (там стоит magic_quotes = 1. Точно не помню, как этот параметр называется, но он делает то же самое, что и функция addslashes() в PHP).
1) а пробовал отключать это?
2) эта настройка не оказывает влияние на HTML теги... только на ["'\]
Цитата:
Видимо, это из-за настроек php (там стоит magic_quotes = 1. Точно не помню, как этот параметр называется, но он делает то же самое, что и функция addslashes() в PHP).
1) а пробовал отключать это?
2) эта настройка не оказывает влияние на HTML теги... только на ["'\]
-
Coutty
Re: [решено] Замена тегов по всей таблице в БД
Vlad Drakula:
1) отключить не могу - не дают, всё-таки бесплатный хостинг
2) хм...Вы правы
как бы там ни было, теги заменяются.
mar, доступ к консоли есть. Пытаюсь запустить там mysql. Пишет "ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"
1) отключить не могу - не дают, всё-таки бесплатный хостинг
2) хм...Вы правы
как бы там ни было, теги заменяются. mar, доступ к консоли есть. Пытаюсь запустить там mysql. Пишет "ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"
-
Vlad Drakula
-
Coutty
Re: [решено] Замена тегов по всей таблице в БД
PHPMyAdmin слишком тяжёлый для пересылки - 8 Мб. Я со своим GPRS-интернетом это не осилю. Да и уйдёт на это целый день, наверное. Разве только архивом посылать, да скриптом разархивировать... Но всё равно многовато.
Вообще же, поставить можно.
Может быть попробовать скрипт написать:
1. Запрос записи
2. Обработка тэгов
3. Обновление таблицы.
4. GOTO 1
Самый дешёвый вариант будет.
Просто я думал, что, может есть специальный SQL-запрос для замены...
Вообще же, поставить можно.
Может быть попробовать скрипт написать:
1. Запрос записи
2. Обработка тэгов
3. Обновление таблицы.
4. GOTO 1
Самый дешёвый вариант будет.
Просто я думал, что, может есть специальный SQL-запрос для замены...
-
mar
Re: [решено] Замена тегов по всей таблице в БД
Coutty
сравните команду, которую задаете для запуска mysql и данные для доступа к базе для php. Если можно, то и другое (с измененным хостом, если это не localhost, именем пользователя и паролем) - сюда. Попробуем понять в чем дело.
сравните команду, которую задаете для запуска mysql и данные для доступа к базе для php. Если можно, то и другое (с измененным хостом, если это не localhost, именем пользователя и паролем) - сюда. Попробуем понять в чем дело.
-
Coutty
Re: [решено] Замена тегов по всей таблице в БД
mar
В консоли я просто пишу: mysql. И вот получается результат как я писал раньше.
Дома из консоли так и запускается. Или там надо сразу указывать базу данных с паролем?
В скрипте пишу так:
mysql_connect(database,username,password);
mysql_select_db('base');
Решил проблему так:
Записи обновились, теги на местах, всё работает.
Спасибо, mar и Vlad Drakula за помощь (иначе бы сидел и ждал у моря погоды).
В консоли я просто пишу: mysql. И вот получается результат как я писал раньше.
Дома из консоли так и запускается. Или там надо сразу указывать базу данных с паролем?
В скрипте пишу так:
mysql_connect(database,username,password);
mysql_select_db('base');
Решил проблему так:
Код: Выделить всё
<?php
require_once ("parts/db.php"); // там происходит соединение с БД
$a=$_GET[a]; # количество итераций (сколько записей обрабатывать)
$b=$_GET[b]; # с какой начинать
$c= $a+$b;
for ($b; $b<$c; $b++)
{
$sql= mysql_query ("SELECT * FROM `bb_posts_text` WHERE `post_id`=$b");
if (mysql_num_rows($sql)!=false)
{
$arr=mysql_fetch_assoc($sql);
$arr[post_text] = str_replace("<", "<", $arr[post_text]);
$arr[post_text] = str_replace(">", ">", $arr[post_text]);
if (mysql_query("UPDATE `bb_posts_text` SET `post_text`='$arr[post_text]' WHERE `post_id`=$b LIMIT 1"))
{
echo "<br>Запись $arr[post_id] успешно обновлена";
}
else
{
if (mysql_errno() != 0)
{
echo $arr[post_id] . "Ошибка в SQL-запросе - ";
echo mysql_errno.": ".mysql_error()."<br>";
}
}
}
}
echo "<a href='convert.php?a=$a&b=$c'>Ссылка дальше</a><noscript><body></body></noscript>";
?>Записи обновились, теги на местах, всё работает.
Спасибо, mar и Vlad Drakula за помощь (иначе бы сидел и ждал у моря погоды).
-
mar
Re: [решено] Замена тегов по всей таблице в БД
Coutty
все хорошо, что хорошо кончается
Цитата:
В консоли я просто пишу: mysql. И вот получается результат как я писал раньше.
Дома из консоли так и запускается. Или там надо сразу указывать базу данных с паролем?
В скрипте пишу так:
mysql_connect(database,username,password);
mysql_select_db('base');
на будущее, раз есть username и password их надо указывать, да и base тоже. Что-то вроде такого:
Код:
все хорошо, что хорошо кончается

Цитата:
В консоли я просто пишу: mysql. И вот получается результат как я писал раньше.
Дома из консоли так и запускается. Или там надо сразу указывать базу данных с паролем?
В скрипте пишу так:
mysql_connect(database,username,password);
mysql_select_db('base');
на будущее, раз есть username и password их надо указывать, да и base тоже. Что-то вроде такого:
Код:
Код: Выделить всё
mysql --host=мой_хост --user=юзер --password=пароль база-
Coutty
Re: [решено] Замена тегов по всей таблице в БД
Цитата:
Код: mysql --host=мой_хост --user=юзер --password=пароль база
Сработало =)
Спасибо
Код: mysql --host=мой_хост --user=юзер --password=пароль база
Сработало =)
Спасибо