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

时间:2011-07-01 21:36:55

标签: php mysql

MY SQL QUERY:

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

结果:KEYWORD123

此查询搜索并生成一个随机行,但我想显示2个随机行。 怎么做?

任何解决方案?

如何??

我用这个

抓住它
  

$ row = mysql_fetch_array($ q); if($ row   < = 0){echo'未找到'; } else {echo   $行[ '标签']; }

4 个答案:

答案 0 :(得分: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字段中的值。

答案 1 :(得分:1)

删除您的订单并添加LIMIT 2

答案 2 :(得分: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'];
}

希望有所帮助

答案 3 :(得分:0)

此查询将返回包含$ key的所有行;如果它现在只返回一个,这只是偶然的。

您希望在查询中添加LIMIT子句,参见http://dev.mysql.com/doc/refman/5.0/en/select.html

顺便说一句,LIKE'%...和ORDER BY RAND()都是性能杀手