开发者

show 2 random rows instead of one

MY SQL QUERY:

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

RESULTS: KEYWORD123

This query searches and results in one random row but i want to show 2 random rows. How t开发者_运维百科o do that?

any solution?

how??

im grabbing it using this

$row = mysql_fetch_array($q); if ($row <= 0){ echo 'Not found'; }else{ echo $row['tab']; }


That query (as-is) will return more than one row (assuming more than one row is LIKE %$key%). If you're only seeing one record, it's possible you're not cycling through the result set, but rather pulling the top response off the stack in your PHP code.

To limit the response to 2 records, you would append LIMIT 2 onto the end of the query. Otherwise, you'll get every row that matches the LIKE operator.

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

The while-loop will run once per returned row. Each time it runs, the $row array inside will represent the current record being accessed. The above example will echo the values stored in your tab field within your db-table.


Remove your order by and add a LIMIT 2


That happens after the execution of the SQL.

Right now you must be doing something like

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

what you need to do

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

Hope that helps


This query will return all rows containing $key; if it returns only one now this is simply by accident.

You want to add a LIMIT clause to your query, cf http://dev.mysql.com/doc/refman/5.0/en/select.html

Btw both LIKE '%... and ORDER BY RAND() are performance killers

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜