У меня есть следующий код:
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 />"; }
просто замените его mysqli_fetch_array
или mysqli_result::fetch_array
🙂
while($row = $result->fetch_array()) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; }
Почти все функции mysql_*
имеют соответствующую функцию mysqli_*
.
Использование:
while ($row = $result->fetch_array(MYSQLI_BOTH)) { // Look inside $row here, do what you want with it. }
Посмотрите на примеры ассоциативных массивов (также должны соответствовать версии fetch_array ()):
Простое решение 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();