Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Замена тегов по всей таблице в БД

Ответить
Настройки темы
[решено] Замена тегов по всей таблице в БД

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте!
Помогите, пожалуйста, разобраться с SQL-запросом.

На сайте *.h15.ru стоит форум phpBB2. При импорте в него (командой "Восстановить базу данных") бэкапа локальной базы данных (mySQL4) все скобки тэгов заменились на их html-аналоги. Т.е. было, скажем <b>, а стало <b>. Видимо, это из-за настроек php (там стоит magic_quotes = 1. Точно не помню, как этот параметр называется, но он делает то же самое, что и функция addslashes() в PHP).
В скриптах, которые писал сам, мог ещё добавить при обработке функцию stripslashes(), но в скрипты phpBB вряд ли - не знаю куда. И, в любом случае, массив данных довольно большой, загружать ещё раз не хотелось бы.

Каким sql-запросом можно сделать так:
"найти & l t ; заменить на '<' по таблице table_name 50 записей, начиная с N-записи". ?

50 записей - потому что при большом объёме работ сервер возвращает ошибку скрипта.

Или, подскажите, пожалуйста, по какому запросу читать док.
Перекапывать всю документацию по MySQL нет ни времени, ни желания, ни особого знания английского.

Отправлено: 16:45, 05-06-2006

 
mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


Цитата:
При импорте в него (командой "Восстановить базу данных") бэкапа локальной базы данных
а нельзя залить не командой форума, а по-нормальному, через mysql ? Доступ к консоли есть?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:08, 05-06-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Coutty
Цитата:
Видимо, это из-за настроек php (там стоит magic_quotes = 1. Точно не помню, как этот параметр называется, но он делает то же самое, что и функция addslashes() в PHP).
1) а пробовал отключать это?
2) эта настройка не оказывает влияние на HTML теги... только на ["'\]

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:09, 05-06-2006 | #3


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Vlad Drakula:
1) отключить не могу - не дают, всё-таки бесплатный хостинг
2) хм...Вы правы как бы там ни было, теги заменяются.

mar, доступ к консоли есть. Пытаюсь запустить там mysql. Пишет "ERROR 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)"


Отправлено: 17:23, 05-06-2006 | #4


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Coutty
а PHPMyAdmin там не поставить?

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 18:11, 05-06-2006 | #5


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


PHPMyAdmin слишком тяжёлый для пересылки - 8 Мб. Я со своим GPRS-интернетом это не осилю. Да и уйдёт на это целый день, наверное. Разве только архивом посылать, да скриптом разархивировать... Но всё равно многовато.
Вообще же, поставить можно.

Может быть попробовать скрипт написать:
1. Запрос записи
2. Обработка тэгов
3. Обновление таблицы.
4. GOTO 1

Самый дешёвый вариант будет.
Просто я думал, что, может есть специальный SQL-запрос для замены...

Отправлено: 19:01, 05-06-2006 | #6

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


Coutty
сравните команду, которую задаете для запуска mysql и данные для доступа к базе для php. Если можно, то и другое (с измененным хостом, если это не localhost, именем пользователя и паролем) - сюда. Попробуем понять в чем дело.

Отправлено: 19:22, 05-06-2006 | #7


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


mar
В консоли я просто пишу: mysql. И вот получается результат как я писал раньше.
Дома из консоли так и запускается. Или там надо сразу указывать базу данных с паролем?
В скрипте пишу так:
mysql_connect(database,username,password);
mysql_select_db('base');


Решил проблему так:

PHP код: Выделить весь код

<?php


require_once ("parts/db.php"); // там происходит соединение с БД

$a=$_GET[a];    # количество итераций (сколько записей обрабатывать)
$b=$_GET[b];    # с какой начинать
$c$a+$b;

for (
$b$b<$c$b++)
  {
  
$sqlmysql_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 за помощь (иначе бы сидел и ждал у моря погоды).

Отправлено: 19:39, 05-06-2006 | #8

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


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

Отправлено: 22:29, 05-06-2006 | #9


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата:
Код: mysql --host=мой_хост --user=юзер --password=пароль база
Сработало =)
Спасибо

Отправлено: 07:41, 06-06-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Замена тегов по всей таблице в БД

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Загрузка - [решено] Программа для создания образа всей системы Glebush Программное обеспечение Windows 7 10-01-2010 09:27
[решено] Неизвестные,временные тормоза всей системы nikitooz Непонятные проблемы с Железом 12 17-06-2009 19:08
Замена видеочипа или всей видеокарты в ноуте? picup Видеокарты 2 04-02-2009 12:10
[решено] Проверка наличия поля в таблице БД Artem-Samsung Вебмастеру 8 19-03-2008 21:40
разная интерпретация тегов комментариев для HTML и XML Vlad Drakula Вебмастеру 3 01-07-2005 11:55




 
Переход