如何从此代码中仅获得唯一结果?我只是尝试查询 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);
}
?>
只需要在我的网站上实现这个
答案 0 :(得分:1)
要从数据库中获取唯一tags
,您必须正确构建查询。
建议:
SELECT DISTINCT tags FROM videos ORDER BY videoid ASC LIMIT 0, 10
这应该返回唯一的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"), );
^ ^ ^ ^
答案 1 :(得分:0)
如果您尝试获取唯一tags
,请尝试此查询...
SELECT DISTINCT tags FROM videos ORDER BY VIDEOID ASC LIMIT 0, 10
答案 2 :(得分:0)
您需要指定您需要的内容DISTINCT
SELECT DISTINCT MyColumnName FROM videos ORDER BY VIDEOID ASC LIMIT 0,10