0

如何从此代码中仅获得唯一结果?我只是尝试使用 SQL SELECT DISTINCT 语句进行查询并且不工作:(

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

include_once ('/var/www/video/configs/db.php'); 

$query = @mysql_query("SELECT * FROM videos ORDER BY VIDEOID ASC LIMIT 0,10");
while($row = @mysql_fetch_array($query)){ $tags = $row['tags']; }

$rand = rand(5, 55);
$list  = explode(',', $tags);
foreach ($list as $link) { 
$tags = array( array('tag' => "$link", 'num' =>  $rand, 'link' => "$link"), ); 

$array = array_unique($tags); print_r($array);

}
?>

只需要在我的网站上实现它

http://www.xarg.org/2008/08/tag-cloud-plugin-for-smarty/

4

3 回答 3

1

要从数据库中获得唯一tags性,您必须正确构建查询。建议:

SELECT DISTINCT tags FROM videos ORDER BY videoid ASC LIMIT 0, 10

这应该返回 unique tags

此外,了解您的代码在做什么是编程时的关键。以下不是您想要执行的操作:

while($row = @mysql_fetch_array($query)){ $tags = $row['tags']; }

这是抓取每一行并覆盖$tags每次,这意味着您只会抓取最后一个标签。你想构建一个标签数组:

while($row = @mysql_fetch_array($query)){ $tags[] = $row['tags']; }

这就是说每次都添加一个新的数组项。foreach你通过覆盖在你的声明中做同样的事情$tags

然后你可以通过删除不需要的引号来使你的代码更整洁

$tags = array( array('tag' => "$link", 'num' =>  $rand, 'link' => "$link"), );
                              ^     ^                             ^     ^
于 2013-03-13T17:19:01.397 回答
0

如果您想获得 unique tags,请尝试此查询...

SELECT DISTINCT tags FROM videos ORDER BY VIDEOID ASC LIMIT 0, 10
于 2013-03-13T17:10:07.360 回答
0

你需要指定你需要什么是 DISTINCT

SELECT DISTINCT MyColumnName FROM videos ORDER BY VIDEOID ASC LIMIT 0,10
于 2013-03-13T17:10:09.007 回答