我有以下代码:
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'],这很好,但如果有很多结果,我如何让它循环并打印每一行?
我确定这很简单,但我不确定我需要在谷歌搜索什么。
我正在寻找与此相当的mysqli:
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
答案 0 :(得分:22)
只需将其替换为mysqli_fetch_array
或mysqli_result::fetch_array
:)
while($row = $result->fetch_array())
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
几乎所有mysql_*
函数都有相应的mysqli_*
函数..
答案 1 :(得分:5)
简单的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();
答案 2 :(得分:3)
使用:
while ($row = $result->fetch_array(MYSQLI_BOTH)) {
// Look inside $row here, do what you want with it.
}
在这里查看关联数组示例(也应该与fetch_array()版本对应):
答案 3 :(得分: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>