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 $行[ '标签']; }
答案 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()都是性能杀手