【发布时间】:2012-06-11 17:14:04
【问题描述】:
我正在创建一个网站,人们可以上传他们拍摄或制作的有趣图片。每次加载主页时,从 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。需要考虑的是,由于数据库的设置方式,我只能使用上面使用的技术获取随机记录。我怎么能这样做?
如果您有任何不确定的地方,请说出来,我会尽力解释。另外,请解释您的解决方案。谢谢!! :-)
【问题讨论】:
-
请不要将
mysql_*函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDO 或MySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,here is good PDO tutorial。 -
我不确定您为什么需要查询文件类型才能生成
<img>链接。你只需要文件名。当用户代理下载图像时,Web 服务器应在响应的Content-Type标头中报告类型。但是,如果您仍然需要 i,则可以在一个查询中获取文件名并一起键入。您不需要 2 个查询。 -
@Celada - 请你解释一下我如何在 1 个查询中得到它?
-
@Skiroid 看看
filename和filetype如何在agam360's answer 中一起查询。但无论如何,我注意到你所说的“文件类型”并不是真正的文件类型:它只是文件名的第二部分,附加到文件名的第一部分加上一个点。为什么不将整个文件名存储在单个数据库列中?按照你的做法,文件名必须包含至少一个点!