2011-07-01 72 views
2

MY SQL查詢:顯示2個隨機行中,而不是一個

$q = mysql_query("SELECT * FROM `ads` WHERE keywords LIKE '%$key%' ORDER BY RAND()"); 

結果:KEYWORD123

此查詢搜索,在一個隨機行的結果,但我想說明2個隨機行。 如何做到這一點?

任何解決方案?

如何?

IM使用此

$行= mysql_fetch_array($ Q)抓住它;如果($行 < = 0){回聲 '未找到'; } else {echo $ row ['tab']; }

回答

3

該查詢(原樣)將返回多行(假設多行是LIKE%$ key%)。如果您只看到一條記錄,那麼您可能沒有循環訪問結果集,而是將您的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將針對每個返回的行運行一次。每次運行時,裏面的$row數組都將表示正在訪問的當前記錄。上面的例子將回顯存儲在你的db-table中的tab字段中的值。

0

執行SQL後會發生這種情況。

現在你必須做一些像

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

你需要做的

$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']; 
} 

希望幫助

0

這個查詢將返回包含$鍵中的所有行什麼;如果現在只返回一個,那簡直是偶然。

你想LIMIT子句添加到您的查詢,CF http://dev.mysql.com/doc/refman/5.0/en/select.html

順便說一句既LIKE「%...和ORDER BY RAND()是性能殺手

相關問題