JackShcherbakov
@JackShcherbakov

Почему скрипт ничего не выводит?

Здравствуйте! Хочу явно очистить память, занимаемую результатом запроса. Но почему-то после такой процедуры ничего не выводится. В чем дело? Память ведь очищена после использования, соответственно было из чего брать строки. Вот код с очисткой памяти:
<?php

$db = new mysqli("localhost", "root", "23210100", "Books");
$query = "SELECT * FROM Books WHERE Price>?";
$stmt = $db->prepare($query);
$var = 15.00;
$stmt->bind_param("d", $var);

$stmt->bind_result($isbn, $author, $title, $price);

$stmt->execute();
$result = $stmt->get_result();

while($stmt->fetch()){
	echo "$isbn, $author, $title, $price<br>" ;
}
echo "Всего строк - " . $stmt->num_rows;
$result->free();

?>

Результат:
Всего строк - 0
Вот без очистки:
<?php

$db = new mysqli("localhost", "root", "23210100", "Books");
$query = "SELECT * FROM Books WHERE Price>?";
$stmt = $db->prepare($query);
$var = 15.00;
$stmt->bind_param("d", $var);

$stmt->bind_result($isbn, $author, $title, $price);

$stmt->execute();
//$result = $stmt->get_result();

while($stmt->fetch()){
	echo "$isbn, $author, $title, $price<br>" ;
}
echo "Всего строк - " . $stmt->num_rows;

?>

Результат:
0-672-31509-2, Pruitt, et al., Teach Yourself GIMP in 24 Hours, 33.26
0-672-31697-8, Michael Morgan, Java 2 for Professional Developers, 61.98
0-672-31745-1, Thomas Down, Installing Debian GNU/Linux, 33.26
Всего строк - 3

В чем проблема и как исправить? Заранее спасибо!
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
@sidni
Php Developer
А чего вы в первом примере не использовали конструкцию while ($row = $result->fetch_assoc()) {
Правда придется отказаться от bind_params
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что вы весь результат уже получили через get_result(), курсор в $stmt дошёл до конца. Теперь перебирайте $result его методами.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы