Php 洗牌:同时只显示一行
如何从DB中同时随机显示一行。一切正常,但显示所有行。谢谢Php 洗牌:同时只显示一行,php,random,shuffle,Php,Random,Shuffle,如何从DB中同时随机显示一行。一切正常,但显示所有行。谢谢 <?php $sql = "SELECT id,name FROM table "; $rows = array(); $result = $objCon->query($sql); while($row = $result->fetch_assoc()) { $rows[] = $ro
<?php
$sql = "SELECT id,name FROM table ";
$rows = array();
$result = $objCon->query($sql);
while($row = $result->fetch_assoc())
{
$rows[] = $row;
}
shuffle($rows);
echo '<ol>';
foreach($rows as $row)
{
echo '<li><h3>'.$row['id'].' = '.$row['name'].'</h3></li>';
}
echo '</ol>';
?>
您可以使用PHP执行此操作:
....
shuffle($rows);
$randomRow = reset($rows);
....
但更好的方法是更改SQL查询:
$query = "SELECT id, name FROM table ORDER BY RAND() LIMIT 1;"
更改您的SQL请求: 从表ORDER BY RAND()LIMIT 1中选择id、名称
通过在sql查询中添加ORDER By RAND(),您要求MySQL对结果进行随机排序,然后限制返回的行数
示例代码是基于选择一行编写的。如果您想要更多,例如5,则需要添加一个while循环。仅随机播放。您仍在遍历从数据库返回的所有行。。只是顺序不同。如果只需要一个,为什么要执行foreach循环?
$sql=“按RAND()限制1从表顺序中选择id、名称”代码>如果您正在使用mysql@letris不客气,你可以为我的投票打分,为我的答案打分。:)你好谢谢你的回答。
<?php
$sql = "
SELECT id, name
FROM table
ORDER BY RAND()
LIMIT 1 ";
$result = mysql_query($sql);
// As you are only return a single row you do you require the while()
$row = mysql_fetch_array($result);
echo '<ol>';
echo '<li><h3>'.$row['id'].' = '.$row['name'].'</h3></li>';
echo '</ol>';
?>