У меня есть следующий код:
include $_SERVER['DOCUMENT_ROOT'].'/include/conn.php';
$query = "SELECT title FROM news_event";
$result = $mysqli->query($query);
$row = $result->fetch_array(MYSQLI_BOTH);
$row_cnt = $result->num_rows;
$result->free();
$mysqli->close();
Это нормально, если есть только один результат, поскольку я могу просто откликнуться на $ row ['title'], но если есть много результатов, как мне получить это, чтобы прокрутить и распечатать каждую строку?
Я уверен, что это действительно просто, но я просто не уверен, что мне нужно искать в google.
Я ищу эквивалент mysqli:
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
Ответ 1
просто замените его mysqli_fetch_array
или mysqli_result::fetch_array
:)
while($row = $result->fetch_array())
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
Почти все функции mysql_*
имеют соответствующую функцию mysqli_*
.
Ответ 2
Простое решение mysqli:
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT * FROM table WHERE 1');
while ( $rows = $resource->fetch_assoc() ) {
print_r($rows);//echo "{$row['field']}";
}
$resource->free();
$db->close();
С обработкой ошибок: если есть фатальная ошибка, скрипт завершится с сообщением об ошибке.
// ini_set('display_errors',1); // Uncomment to show errors to the end user.
if ( $db->connect_errno ) die("Database Connection Failed: ".$db->connect_error);
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
if ( !$resource ) die('Database Error: '.$db->error);
while ( $row = $resource->fetch_assoc() ) {
echo "{$row['field']}";
}
$resource->free();
$db->close();
Использование итераторов: поддержка была добавлена с помощью PHP 5.4
$db = new mysqli('localhost','user','password','database');
foreach ( $db->query('SELECT * FROM table') as $row ) {
print_r($row);//echo "{$row['field']}";
}
$db->close();
Получить одну запись: этот код не требует цикла.
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table');
$row = $resource->fetch_assoc();
echo "{$row['field']}";
$resource->free();
$db->close();
Ответ 3
Использование:
while ($row = $result->fetch_array(MYSQLI_BOTH)) {
// Look inside $row here, do what you want with it.
}
Посмотрите на примеры ассоциативных массивов (также должны соответствовать версии fetch_array()):
http://php.net/manual/en/mysqli-result.fetch-assoc.php