试图从数据库中抓取几个随机视频,但它只是一直显示相同的视频

时间:2011-01-17 03:04:57

标签: php mysql random

我正在尝试从我的数据库中抓取几个随机视频,并将它们显示在页面上。然而,它只是继续抓取相同的视频而不是几个不同的视频。所以我最终得到5个相同的视频,而不是5个不同的视频。

这是抓取随机PHP代码文件......之后是模板输出文件。

//=====================================================
// Random | Previous | Next
//=====================================================
$show['random'] = $db->quick_fetch(
   "SELECT file_id, title, title_seo, category_id, thumb FROM files 
      WHERE files.category_id = '".$show['main']['category_id']."'
            AND files.verified=1 ORDER BY RAND() LIMIT 0,1;
");

这是模板CSS html thingy代码我粘贴5次以显示5个随机视频

            <td  valign="top" width="53%"><?
     

$ sql =“select * from files ORDER BY rand()limit 0,5”;   $解析度= @的mysql_query($ SQL);   $数据= @ mysql_result($ RES,0, '文件名');   $ ID = @ mysql_result($ RES,0, 'FILE_ID');   $标题= @ mysql_result($ RES,0, '标题');   $ title2 = str_replace(“”,“ - ”,$ title);   $路径= “{$ SITEURL} /媒体/ {$ file.random.file_id} / {$ file.random.title_seo} /”;   $ IMG = “{$ SITEURL} /拇指/ {$ file.random.thumb}”;   echo“
{$ file.random.title}”   

2 个答案:

答案 0 :(得分:1)

你不能只粘贴它5次。您还必须运行查询5次。但这也不是正确的做法。您应该运行一次查询,并将LIMIT 0,1更改为LIMIT 0,5或仅LIMIT 5。然后在smarty模板中循环遍历5个随机结果。

下面是你如何在smarty(又名CSS html thingy代码)中循环关联数组:

http://www.smarty.net/docsv2/en/language.function.section.tpl

修改

好的,那段代码看起来不太好。让我们分解一下。你有没有在phpmyadmin或一些这样的工具中运行你的查询,以确保它返回你想要的?首先,确保查询是好的。

第二,你甚至使用smarty吗?我猜对了,因为那就是它的样子。

第三,确保您发送给smarty的阵列已正确形成并包含您需要的所有数据。在分配变量之前,在PHP端执行print_r

最后,这里有一些伪代码,告诉你这应该如何工作,如果它实际上是聪明的:

Run the query

Loop through the results, building an associative array of the data you want to send to smarty
(print it out and make sure its correct, for debugging purposes)

Assign the created array to a variable available to the smarty template

In the smarty template, use the section (loop) code and loop over the array of results to display it.

答案 1 :(得分:0)

作为一般规则,您应该尽量避免在SQL语句中使用ORDER BYRAND(),因为它们是排序和随机化结果的低效方法。

您最好获取所有5个结果并使用array_rand()等随机选择它们。

小心。