我试图一次从mysql数据库中获取3个结果(所以它一次显示3个)
所以它会像
$sql = mysql_query("SELECT * FROM table");
while ($row = mysql_fetch_array($sql)) {
print $row['username'];
print $row['username2'];
print $row['username3'];
}
但$ row ['username'];和$ row ['username2']; $行[ 'USERNAME3'];将只是mysql表中的第一个第二和第三个结果。
然后它会重复和$ row ['username'];和$ row ['username2'];和$ row ['username3'];将是第4,第5和第6等等。
我知道如何做到这一点吗?
答案 0 :(得分:0)
要显示三个结果,您可以这样做:
$sql = mysql_query("SELECT * FROM table");
$count = 0;
while ($row = mysql_fetch_array($sql)) {
$count++;
if ($count === 3) break;
print $row['username'];
}
或者如果您愿意,可以在查询中指定LIMIT
子句以仅获取三个记录:
$sql = mysql_query("SELECT * FROM table LIMIT 3");
while ($row = mysql_fetch_array($sql)) {
print $row['username'];
}
使用LIMIT
子句,您还可以指定要返回的起始索引和行数:
$sql = mysql_query("SELECT * FROM table LIMIT 4, 3");
上述查询将从第4行开始返回3行。
答案 1 :(得分:0)
您可以使用限制条款
select * from table limit 1, 3
然后是接下来的3,
select * from table limit 4, 3
(您可能想要查找语法,我可能会向后退订单)
答案 2 :(得分:0)
$sql = mysql_query("SELECT * FROM table");
$count = 0;
while ($row = mysql_fetch_array($sql)) {
$count++;
if ($count % 3 == 0) print "<br/>" /* or any other way you want to break up the data */
print $row['username'];
}
答案 3 :(得分:0)
我认为你的逻辑是有缺陷的,史蒂文。
为什么在循环的一次迭代中需要访问三条记录?这听起来像是一个不合逻辑的问题。我的赌注是你以错误的方式看问题。你能为这个问题提供一个背景吗?
答案 4 :(得分:0)
虽然听起来你的方法听起来有点不合逻辑,但我想你可以将结果存储在一个数组中,一次输入三个用户名,然后输出数组中的数据。像这样:
$q = mysql_query("SELECT * FROM table");
$usernames = array();
while($d = mysql_fetch_assoc($q)) {
$usernames[] = $d['username'];
if(count($usernames) = 3) {
sprintf('user 1: %s, user 2: %s, user 3: %s<br />', $usernames[0], $usernames[1], $usernames[3]);
$usernames = array();
}
}
以上假设我正确理解了您的问题。我仍然不太清楚你为什么要使用这种方法 - 你可能最好重新思考这背后的逻辑。
答案 5 :(得分:0)
你可以这样做:
function mysql_fetch_n_rows($rs, $n)
{
$rows = array();
while ($n-- && ($row = mysql_fetch_array($rs)))
{
$rows[] = $row;
}
return $rows;
}
$rs = mysql_query("SELECT * FROM table");
while ($rows = mysql_fetch_n_rows($rs, 3))
{
print $rows[0]['username'];
print $rows[1]['username'];
print $rows[2]['username'];
}
(免责声明:显然你需要验证你实际上有3行。你可能只得到一两行。)
但我怀疑你真的需要上面的代码。通常,像其他一些答案所表明的那样($i % 3)
要容易得多。我肯定会不发布这个答案,因为我认为这是最好的通用解决方案,但仅作为创建通用功能的一个例子,而不是试图在{{1}内硬编码这种类型的解决方案}循环。
答案 6 :(得分:0)
与模板一起使用的5美分 我喜欢使用模板
<?
$data = dbgetall("SELECT username FROM table");
$data = array_chunk($data,3);
?>
<table>
<? foreach ($data as $chunk): ?>
<tr>
<? foreach ($chunk as $row): ?>
<td><?=$row['username']?></td>
<? endforeach ?>
</tr>
<? endforeach ?>
</table>