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);

}
?>

これを私のWebサイトに実装するだけです

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 に答える