[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: fetch-функции убивают apache
muzaffaraka
Господа, помогите начинающему в PHP-MySql.
Имеется Windows7x64 c установленными apache 2.2.14 x64, php 5.2.5 (x64), mysql 5.1.40 x64.

По отдельности они работают прекрасно. Но следующий код:


<?php
$searchtype=$_POST['searchtype'];
$searchterm=$_POST['searchterm'];
$searchterm=trim($searchterm);

if(!$searchtype||!$searchterm){
echo 'Вы не ввели параметры поиска. Пожалуйста, вернитесь на предыдущую страницу и повторите ввод.';
exit;
}

if(!get_magic_quotes_gpc()){
$searchtype=addslashes($searchtype);
$searchterm=addslashes($searchterm);
}
$db=new mysqli('localhost','root','******','books');
if(mysqli_connect_errno()){
echo 'Ошибка подключения к базе данных';
exit;
}

$query="SELECT * FROM books WHERE ".$searchtype." LIKE '%".$searchterm."%'";
$result=$db->query($query);
$num_result=$result->num_rows;
echo "<p>Найдено книг: ".$num_result."</p>";

for($i=0; $i < $num_result; $i++){
$row=$result->fetch_assoc();
echo '<p><strong>'.($i+1).'. Название: ';
echo htmlspecialchars (stripslashes($row['title']));
echo '</strong><br/>Автор: ';
echo stripslashes($row['author']);
echo '<br/>ISBN: ';
echo stripslashes($row['isbn']);
echo '<br/>Цена: ';
echo stripslashes($row['price']);
echo '</p>';
}

$result->free();
$db->close();

?>


приводит к перезапуску apache, а браузер отображает "Соединение было сброшено".
Из лога apache:


[Sat May 28 23:19:08 2011] [error] [client 127.0.0.1] File does not exist: C:/apache64/htdocs/favicon.ico
[Sat May 28 23:19:08 2011] [error] [client 127.0.0.1] File does not exist: C:/apache64/htdocs/favicon.ico
[Sat May 28 23:19:08 2011] [error] [client 127.0.0.1] File does not exist: C:/apache64/htdocs/favicon.ico
[Sat May 28 23:19:19 2011] [notice] Parent: child process exited with status 255 -- Restarting.
[Sat May 28 23:19:19 2011] [notice] Apache/2.2.14 (Win64) PHP/5.2.5 (x64) configured -- resuming normal operations
[Sat May 28 23:19:19 2011] [notice] Server built: Oct 10 2009 15:18:16
[Sat May 28 23:19:19 2011] [notice] Parent: Created child process 6024
[Sat May 28 23:19:19 2011] [notice] Child 6024: Child process is running
[Sat May 28 23:19:19 2011] [notice] Child 6024: Acquired the start mutex.
[Sat May 28 23:19:19 2011] [notice] Child 6024: Starting 64 worker threads.
[Sat May 28 23:19:19 2011] [notice] Child 6024: Starting thread to listen on port 80.


Экспериментальным путём выяснил, что крашится именно на строке
$row=$result->fetch_assoc();

При этом, если выбирать только один столбец
 $query="SELECT title FROM books WHERE ".$searchtype." LIKE '%".$searchterm."%'";
, то всё работает нормально. Если выбирать более 1 столбца, то всё ломается. Не могу понять в чём дело, подскажите, пожалуйста, знающие.



Спустя 22 минуты, 19 секунд (28.05.2011 - 22:46) Status-X написал(а):
Сообщение самоудалилось!

Спустя 7 минут, 43 секунды (28.05.2011 - 22:54) muzaffaraka написал(а):
Нет, та же ситуация, даже если вынести вызов
$row=$result->fetch_assoc();
вне цикла, полностью избавившись от цикла. Т.е. даже единождый вызов функции ломает apache.

Спустя 14 минут, 55 секунд (28.05.2011 - 23:09) Status-X написал(а):
Сообщение самоудалилось!

Спустя 2 часа, 28 минут, 54 секунды (29.05.2011 - 01:38) Invis1ble написал(а):
Это все ваши виндоусы баганутые tongue.gif

Спустя 4 мин:
PS. Ппц, написал и увидел BSOD laugh.gif

Спустя 8 часов, 16 минут, 45 секунд (29.05.2011 - 09:55) muzaffaraka написал(а):
Цитата (Status-X @ 28.05.2011 - 20:09)
Полистайте http://bugs.php.net/bug.php?id=44645
Есть вариант решения с отдельным выбором базы

Проблемы с подключением к базе нет. Подключение идёт, запрос выполняется, данные выбираются, в $num_result записывается количество выбранных строк. Но, при вызове fetch-функций (любых) apache грохается с треском.

Спустя 2 часа, 29 минут, 13 секунд (29.05.2011 - 12:24) Status-X написал(а):
Сообщение самоудалилось!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.