HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 17.03.2009, 17:16
Zedi
Постоянный
Регистрация: 06.06.2007
Сообщений: 335
Провел на форуме:
1487377

Репутация: 392
Отправить сообщение для Zedi с помощью ICQ
По умолчанию

Цитата:
Сообщение от m0Hze  
for($i=$begin;;$i+=$count) - ошибко, или я чтото не понимаю оО
после $i=$begin у тебя две точки с запятой, чтот там намудрено, там должно быть три аргумента, типа for ($i = 0; $i < $p; $i++), в первом переменные стартовые, потом условие продолжения итераций цикла и 3: действие после каждой итерации(прохода)
 

  #12  
Старый 18.03.2009, 00:29
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

draliokero Разницы большой не будет - просто читаем файл дампа построчно (fgets), а потом просто восстанавливаем БД из этого дампа. Выгода - не убьем базу, меньшее количество обращений к БД, не надо следить за кавычками

m0Hze Zedi Синтаксис for такой же как в Си. Любые переменные в for($i1;$i2;$i3) - могут быть пропущены. В случае пропуска второго параметра - цикл будет выполняться бесконечно. Поэтому внутри цикла есть break;

#Wolf# В скрипт закралась ошибка, вместо $tmp=str_replace нужно $tmp=preg_replace
 

  #13  
Старый 19.03.2009, 04:46
#Wolf#
Постоянный
Регистрация: 26.03.2008
Сообщений: 311
Провел на форуме:
3799424

Репутация: 479
По умолчанию

Цитата:
Сообщение от Gifts  
#Wolf# По-хорошему, лучше сделать полный дамп базы и обработать, иначе будет слишком много запросов к БД.

PHP код:
<?
set_time_limit
(0);
$begin=0// С какой позиции начинать
$count=10// Сколько строк БД обрабатывать за раз
for($i=$begin;;$i+=$count)
{
    
$result=mysql_query("SELECT * FROM posts LIMIT $i,$count");
    if (!
mysql_num_rows($result)) break;
    
    while (
$row=mysql_fetch_array($result))
    {
        
$tmp=preg_replace('~<a.*href="([^"]+)".*>.*</a>~Usi','$1',$row['full_news']);
        
// В запросе на обновление не уверен насчет экранирования кавычек
        
if ($tmp!=$row['full_news']) $update=mysql_query("UPDATE posts SET full_news='$tmp' WHERE full_news='".$row[full_news]."'");
    }
    @
file_put_contents('cur_pos.txt',$i); // Пишем в файл текущую позицию, на всякий случай
}
Но повторюсь - лучше обрабатывать построчно дамп. Так можно будет проконтролировать, что все обработано правильно и не угробить случайно БД
несколько вопросов:
1)
PHP код:
$i+=$count 
что это за += 0_0
2) тестил с одной новостью. фор пока убрал. так новость отлично режется но не апдейтится. ругается .
вот к примеру выборка из бд
PHP код:
<div align="center"><img src="http://www.test.ru/posts/2008-02/1203842370_1203713115_73ed9d5d865d.jpg" style="border: none;" alt='Alcohol 120% 1.9.7.6221 + Activation Keymaker v3.6' title='Alcohol 120% 1.9.7.6221 + Activation Keymaker v3.6' /></div><br /><br /><b>Название:</bAlcohol 1201.9.7.6221 Activation Keymaker v3.6<br /><b>Разработчик:</b>
<
a href="http://rapidshare.com/files/94052968/alcohol_120__1.9.7.6221.rar" target="_blank">Скачать Download</a
и ругается на
PHP код:
You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'Alcohol 120% 1.9.7.6221 + Activation Keymaker v3.6' title='Alcohol 120% 1.9.7.62' at line 1 
как я понимаю получается какая то херня с кавычками

Последний раз редактировалось #Wolf#; 19.03.2009 в 04:52..
 

  #14  
Старый 19.03.2009, 05:06
flabber
Новичок
Регистрация: 24.01.2007
Сообщений: 18
Провел на форуме:
103494

Репутация: 9
По умолчанию

Аааа вы нарки... не легче сдампить это всё дело и пустить скрипт для распарсивания в шеле?...
 

  #15  
Старый 19.03.2009, 05:08
PaCo
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
Провел на форуме:
1754802

Репутация: 380
По умолчанию

2#Wolf#

1)http://www.php.ru/manual/language.operators.assignment.html

2)
if ($tmp!=$row['full_news']) $update=mysql_query("UPDATE posts SET full_news='$tmp' WHERE full_news='".mysql_real_escape_string($row['full_news'])."'");
 

  #16  
Старый 19.03.2009, 12:52
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

#Wolf# Ну я же написал что не уверен в экранировании) У PaCo тоже не совсем правильно. Надо:
PHP код:
if ($tmp!=$row['full_news']) $update=mysql_query("UPDATE posts SET full_news='".mysql_real_escape_string($tmp).'\' WHERE full_news=\''.mysql_real_escape_string($row[full_news])."'"); 
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BUDSF - Большой FAQ по использованию Dedicated Servers NemeZz Статьи 194 11.06.2010 00:30
Самый большой сотовый телефон в мире FTSE100 Мировые новости. Обсуждения. 26 16.03.2009 22:29
Самый большой телескоп в мире запустят в космос jerrri Мировые новости. Обсуждения. 2 11.02.2009 11:06



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ