2013-04-11 125 views
0

我在线上教程后创建了一个PHP/mysql搜索数据库。每件事情都很好。我只想知道如何让数据库中的结果以随机顺序显示。如何让mysql数据库ID随机回显?

当前结果按照数据库中的ID号以数字顺序显示。我想知道如何随机显示结果?

使用$ id调用id。 这里是PHP:

<?php 

$button = $_GET ['submit']; 
$search = $_GET ['search']; 

if(strlen($search)<=1) 
echo "Search term too short"; 
else{ 
echo "<h1>Dislpaying results for <b>$search</b> <hr size='1'></h1></br>"; 
mysql_connect("localhost","dobhgc767545ch2","jhjhghtyutuhjh"); 
mysql_select_db("doorcouhjhjh2"); 

$search_exploded = explode (" ", $search); 

foreach($search_exploded as $search_each) 
{ 
$x++; 
if($x==1) 
$construct .="keywords LIKE '%$search_each%'"; 
else 
$construct .="OR keywords LIKE '%$search_each%'"; 

} 

$constructs ="SELECT * FROM search WHERE $construct"; 
$run = mysql_query($constructs); 

$foundnum = mysql_num_rows($run); 

if ($foundnum==0) 
echo "Sorry, there are no matching result for <b>$search</b>.</br></br>1. 
Try more general words. for example: If you want to search 'how to create a website' 
then use general keyword like 'create' 'website'</br>2. Try different words with similar 
meaning</br>3. Please check your spelling"; 
else 
{ 

echo "$foundnum results found !<p>"; 

$per_page = 9; 
$start = $_GET['start']; 
$max_pages = $foundnum/$per_page; 
if(!$start) 
$start=0; 
$getquery = mysql_query("SELECT * FROM search WHERE $construct LIMIT $start, $per_page"); 

while($runrows = mysql_fetch_assoc($getquery)) 
{ 
$title = $runrows ['title']; 
$description = $runrows ['description']; 
$link = $runrows ['link']; 
$image = $runrows ['image']; 


echo " 
<div class=\"pagination\" style=\"display:inline\"><ul style=\"background-color:#\"><li><div  class=\"span3_search\"><div class=\"title_bg\"><h2><a href='$link'><b>$title</b> </a></h2></div><div class=\"result_img\"><a href='$link'><img id=\"result_img\" src=\"$image\" /></a> </div><div class=\"result_desc\"><p>$description</p></div><div class=\"result_link\"><br /> 
<a href='$link'>$link<br /><br /></a><p></div></div></li></ul></div> 
"; 


?> 
+3

**如果**其小数据集'ORDER by RAND()' – 2013-04-11 02:31:25

+0

Dagon将其作为答案提交。 – 2013-04-11 02:32:56

+2

首先,在代码中插入[sql注入攻击](http://bobby-tables.com)洞。 – 2013-04-11 02:41:18

回答

4

,如果它是一个小的数据集,你可以使用MySQL的

ORDER by RAND() 

不这样做在一个大的数据集,这是非常低效的

+0

我的目标是获得10,000个结果。那么什么是有效的方法? – 2013-04-11 02:36:15

+2

10,000对于db来说很小,我不会担心它。因为你获得的搜索结果不会以某种顺序让它们变得更具感觉而不是随机的?您可能想查看[全文搜索](http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html)搜索,然后您可以按照Relevance – 2013-04-11 02:37:29

0
$constructs ="SELECT * FROM search WHERE $construct ORDER BY rand()";