我正在创建一个网站,人们可以上传他们拍摄或拍摄的有趣照片。每次加载主页时,都会从MySQL数据库中将随机图片/记录显示在页面上。这是通过......完成的。
$filename = mysql_fetch_row(mysql_query("SELECT filename FROM pictures ORDER BY RAND() LIMIT 1"));
echo $filename[0];
这会将随机图片文件名回显到页面上。像funny_cat
这样的东西。但后来我需要文件类型,以便我可以将图像回显到页面上。像这样......
while ($record = mysql_fetch_array(mysql_query("SELECT * FROM pictures WHERE p='$p'"))) {
$filetype = $record["filetype"];
}
echo "<img src=\"picture/".$filename[0].".".$filetype."\" />";
一切都很好。
现在,我正在努力奋斗。我想在页面上显示6个其他随机较小的图片。因此,我需要获得6条随机记录,并为每条记录回显filename
和filetype
。需要考虑的是,由于数据库的设置方式,我只能使用上面使用的技术获取随机记录。我怎么能这样做?
如果您有什么不确定的地方请说,我会尝试解释。另外,请解释您的解决方案。谢谢!!的 : - )
答案 0 :(得分:0)
通过将查询的限制更改为6来检索随机列表的前6个结果。
$result = mysql_query("SELECT filename FROM pictures ORDER BY RAND() LIMIT 6")
然后,您可以调用mysql_fetch_row 6次以获取所有6个文件名。
$filenames = array();
while ($row = mysql_fetch_row($result)) {
$filesnames[] = $row[0];
}
现在,您拥有所有6个文件名,并且可以为每个文件名进行图像检索。
答案 1 :(得分:-1)
如果我理解正确你想要“复制”随机提取6次。 如果是这样的话,我会这样做:
for($i = 0; $i < 6; $i++){
$filename = mysql_fetch_row(mysql_query("SELECT filename,filetype FROM pictures ORDER BY RAND() LIMIT 1"));
$file = $filename[0].'.'.$filename[1];
echo "<img src=\"picture/".$file."\" />";
}
注意: 如果要获取大量数据,请不要使用rand函数,而是在php中创建一个随机数组并获取相关ID。
修改强>
如果你想要一个解决方案来检索6张不同的随机图片(这样他们就不会重复了)我会这样做:
$arr_ids = array();
for($i = 0;$i < 6;$i++){
$fresh_rand = rand()*$db_row_count;//$db_row_count the number of rows in the data base
for($j=0;$j <count($arr_ids);$j++){
if($fresh_rand == $arr_ids[$j]){
$j =0;
$fresh_rand = rand()*$db_row_count;
}
}
$arr_ids[$i] = $fresh_rand;
}
然后我会从db中获取$ arr_ids数组中的id 我的解决方案很匆忙,请原谅我的不良做法,但我希望你明白你需要做什么。