16

私は次のコードを持っています:

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();

エコーできるので結果が1つしかない場合はこれで問題あり$row['title']ませんが、結果がたくさんある場合は、これをループしてすべての行を出力するにはどうすればよいですか?

これは本当に簡単だと思いますが、Googleで何を検索する必要があるのか​​わかりません。

私はmysqliこれに相当するものを探しています:

while( $row = mysql_fetch_array($result) )
{
    echo $row['FirstName'] . " " . $row['LastName'];
    echo "<br />";
}
4

4 に答える 4

28

mysqli_fetch_arrayまたはに置き換えてくださいmysqli_result::fetch_array:)

while( $row = $result->fetch_array() )
{
    echo $row['FirstName'] . " " . $row['LastName'];
    echo "<br />";
}

ほとんどすべてのmysql_*機能に対応するmysqli_*機能があります。

于 2012-09-28T20:46:46.043 に答える
8

単純な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.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('localhost','user','password','database');
$resource = $db->query('SELECT field FROM table WHERE 1');
while ( $row = $resource->fetch_assoc() ) {
    echo "{$row['field']}";
}
$resource->free();
$db->close();

イテレータの使用:PHP5.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();
于 2015-11-19T01:34:07.893 に答える
4

使用する:

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

于 2012-09-28T20:49:32.550 に答える
1

あなたは単に使用してループすることができますforeach

$query = "SELECT title FROM news_event";
$result = $mysqli->query($query);
foreach($result as $row) {
    echo $row['FirstName'] . " " . $row['LastName'];
    echo "<br />";
}

mysqliコードとHTMLを分離したい場合は、すべてを配列にフェッチして後でループすることをお勧めします。

$query = "SELECT title FROM news_event";
$result = $mysqli->query($query);
$news_events = $result->fetch_all(MYSQLI_ASSOC);

// Later in HTML:    

<div>
<?php foreach($news_events as $row): ?>
    <p><?= $row['FirstName'] ?> <?= $row['LastName'] ?></p>
<?php endforeach ?>
</div>
于 2020-03-06T13:02:40.570 に答える