显示2个随机行而不是一行

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 to 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