2011-07-01 13 views
2

MY SQLクエリの2つのランダムな行を示して1行のランダムでKEYWORD123ではなく、1つの

このクエリを検索し、結果をしかし、私は2つのランダムな行を表示したいです。 どうすればいいですか?

どのような解決策ですか?

how ??この

$行=は、mysql_fetch_array($ qを)使用して、それをつかん

イム。 if($行 < = 0){エコー '見つかりません'; } else {echo $ row ['tab']; }

答えて

3

このクエリは、複数の行を返します(複数の行がLIKE%$ key%であると仮定します)。 1つのレコードだけが表示されている場合は、結果セットを循環させるのではなく、PHPコードのスタックから一番上の応答を取り出すことが可能です。

2レコードへの応答を制限するには、クエリの最後にLIMIT 2を追加します。それ以外の場合は、LIKE演算子に一致するすべての行が表示されます。

//Build Our Query 
$sql = sprintf("SELECT tab 
       FROM ads 
       WHERE keyword LIKE '%s' 
       ORDER BY RAND() 
       LIMIT 2", ('%'.$key.'%')); 
// Load results of query up into a variable 
$results = mysql_query($sql); 
// Cycle through each returned record 
while ($row = mysql_fetch_array($result)) { 
    // do something with $row 
    echo $row['tab']; 
} 

while-loopは返される行につき1回実行されます。実行されるたびに、$rowの配列はアクセスされている現在のレコードを表します。上記の例では、dbテーブル内のtabフィールドに格納されている値をエコーし​​ます。

1

ご注文を削除してからLIMITを追加してください。2

0

これはSQLの実行後に発生します。

は今、あなたはこのクエリは、$キーを含むすべて行を返します

0

を助け

$q = mysql_query("SELECT * FROM ads WHERE keywords LIKE '%$key%' ORDER BY RAND() LIMIT 2"); 
$res = mysql_query($q); 
while($r = mysql_fetch_array($res)){ 
echo "<br>" . $r['keywords']; 
} 

希望何をする必要があるか

$res = mysql_query($q); 
$r = mysql_fetch_array($res); 
echo $r['keywords']; 

ようなものをやっている必要があります。今のところ1つしか返ってこないのならば、これは単に偶然によるものです。

あなたのクエリにLIMIT句を追加したい

、CF http://dev.mysql.com/doc/refman/5.0/en/select.html

ところで、両方のLIKE「%...とRAND(BY ORDER)は、パフォーマンスキラー

です