PHP MySQLI подготовленный оператор разбивается на get_results ()

Я очень новичок в подготовленных заявлениях mysqli, на самом деле это моя первая попытка. У меня есть этот блок кода, и я добавляю echos между каждой командой, и он отображает aaa и bbb, но не ccc, что я здесь делаю неправильно?

ошибок не возникает, просто пустой экран:

<?php $mysqli = new mysqli("localhost", "username", "password", "database"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } if ($stmt = $mysqli->prepare("SELECT title FROM `in-the-press`")) { $stmt->execute(); echo 'aaa'; $stmt->bind_result($title); echo 'bbb'; $result = $stmt->get_result(); echo 'ccc'; while ($stmt->fetch()) { printf("%s %s\n", $title); } echo 'ddd'; $stmt->close(); } $mysqli->close(); ?> 

ОБНОВЛЕНИЕ Я смог получить эту работу, выполнив следующие действия:

 <?php $mysqli = new mysqli("localhost", "username", "password", "database"); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } if ($stmt = $mysqli->prepare("SELECT id, community, map, image FROM `googleMaps`")) { $stmt->execute(); $stmt->bind_result($id, $community, $map, $image); $stmt->fetch(); printf($id . ' ' . $community . ' ' . $map . ' ' . $image); $stmt->close(); } ?> 

но это только дает мне 1 строку данных, как я могу получить все строки данных?

Чтобы использовать get_result() вы должны использовать драйвер mysqlnd. Это включено по умолчанию в PHP 5.4 и более поздних версиях. Если вы используете более раннюю версию PHP, вам нужно выполнить некоторую установку, чтобы заставить mysqlnd работать. См. http://php.net/manual/en/mysqlnd.install.php

Если вы используете get_result() , вам не нужно ничего связывать. Вы просто извлекаете каждую строку в виде массива и ссылаетесь на столбцы как на элементы этого массива:

  if ($stmt = $mysqli->prepare("SELECT title, community, map, image FROM `googleMaps `")) { $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { printf("%s %s\n", $row["title"], $row["community"]); } $stmt->close(); } 

Если вы не используете get_result() , вы используете Mysqli по-старому, привязывая переменные к столбцам и вызывая fetch() для заполнения переменных. Но вам нужно запустить цикл, пока fetch() вернет NULL, когда результат будет завершен.

  if ($stmt = $mysqli->prepare("SELECT title, community, map, image FROM `googleMaps`")) { $stmt->execute(); $stmt->bind_result($title, $community, $map, $image); while ($stmt->fetch()) { printf("%s %s\n", $title, $community); } $stmt->close(); } 

Вам нужно распечатать результаты в цикле, например, вам нужно выполнить эхо для каждого найденного результата.

http://php.net/manual/en/control-structures.for.php