За последние 24 часа нас посетили 50987 программистов и 1803 робота. Сейчас ищут 734 программиста ...

Segmentation fault и MySQL

Тема в разделе "MySQL", создана пользователем NeonSunlight, 20 авг 2010.

  1. NeonSunlight

    NeonSunlight Активный пользователь

    С нами с:
    20 авг 2010
    Сообщения:
    4
    Симпатии:
    0
    Добрый день.
    Есть такая проблема. Скрипт обрабатывает sql запрос:
    [sql]select news.header as header, news.anounce as anounce, newslines.name as newslines, newslines.url as newslines_url, news.url as url, news.publish_time as pub_time from news left join news2newsline on news2newsline.news_id=news.id join newslines on news2newsline.newsline_id=newslines.id where news.is_published = '1' and newslines.url = 'anounces' limit 10;[/sql]

    При проверки этого добра через phpmyadmin все работает отлично, а вот при вызове из скрипта - пустота, никакого вывода ни в логи php, ни в логи mysql. Зато в логи апача сыпется
    Что делать - ума не приложу. Гуглил, но народ, в основном, решает проблемы, связанные с различными популярными и не очень движками.
    Заранее спасибо :)

    P.S. - работаю на сборке MAMP, Apache/2.0.63 (Unix) PHP/5.2.11
     
  2. wiiio

    wiiio Активный пользователь

    С нами с:
    24 авг 2010
    Сообщения:
    18
    Симпатии:
    0
    как исполняешь это добро в скрипте? попробуй mysql_query('SQL') or die (mysql_error());
    может какие еще ошибки выдаст.. запрос в целом правильный.. исполняешь пробуешь с целой кучей всего или пробуешь на чистом скрипте, где коннект к бд + запрос ?

    UPD: поправил mysql_query('SQL') or die (mysql_error());
     
  3. NeonSunlight

    NeonSunlight Активный пользователь

    С нами с:
    20 авг 2010
    Сообщения:
    4
    Симпатии:
    0
    В чистом скрипте это заработало нормально.
    В рабочей версии этот запрос порождает цикл с preg_replace внутри.
    При этом если закомментировать только mysql_query - все работает хорошо, но, понятное дело, без замен.
    Дома попробую вставить mysql_error и отпишу тут что получится.
     
  4. wiiio

    wiiio Активный пользователь

    С нами с:
    24 авг 2010
    Сообщения:
    18
    Симпатии:
    0
    Можно глянуть как выглядит рабочая версия скрипта ?
     
  5. NeonSunlight

    NeonSunlight Активный пользователь

    С нами с:
    20 авг 2010
    Сообщения:
    4
    Симпатии:
    0
    Вот код, в который попадает запрос:
    Код (Text):
    1.     private function parse_cycle($parse_code) {
    2.         preg_match("/cycle((.|\n)*?)\(\"(.*?)\"\)((.|\n)*?)\{((.|\n)*$)/s", $parse_code, $x);
    3.  
    4.             $sql = $x[3];
    5.             $code = substr($x[6], 0, strlen($x[6]) - 1);
    6.  
    7.             $z = mysql_query($sql);
    8.             $in_cycle = '';
    9.  
    10.             while ($params = mysql_fetch_assoc($z)) {          
    11.                 $in_cycle = $in_cycle . $code;
    12.                 foreach ($params as $key=>$value) $in_cycle = preg_replace('/\$' . $key . '/', $value, $in_cycle);
    13.             }
    14.        
    15.             return $in_cycle;
    16. }
    В $parse_code содержится строки вида cycle("запрос") {действия для каждой полученной строки результата}
    Внутри {} переменные заменяются на полученные из mysql.

    P.S. - mysql_query('SQL') or die (mysql_error()); к сожалению не привел ни к какому результату, поскольку скрипт, по видимому, падает во время запроса, а вернее во время его отправки в mysql.

    P.S.S. - извините, написано немного по-индусски, потому что наспех)