你這不是只查詢了一條,而是你只輸出了一條罷了
創(chuàng)新互聯(lián)專注于銀川企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站開發(fā)。銀川網(wǎng)站建設(shè)公司,為銀川等地區(qū)提供建站服務(wù)。全流程定制開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
$sql="select?*?from?product?ORDER?BY?rand()?LIMIT?4?";
$mysql=mysql_query($sql);
while($row=mysql_fetch_assoc($mysql)){
//循環(huán)輸出記錄
print_r($row);
}
當(dāng)然,如果你的記錄不足4條,也沒法顯示出來(lái)
array_rand()
在你想從數(shù)組中取出一個(gè)或多個(gè)隨機(jī)的單元時(shí)相當(dāng)有用。它接受
input
作為輸入數(shù)組和一個(gè)可選的參數(shù)
num_req,指明了你想取出多少個(gè)單元
-
如果沒有指定,默認(rèn)為
1。
如果你只取出一個(gè),array_rand()
返回一個(gè)隨機(jī)單元的鍵名,否則就返回一個(gè)包含隨機(jī)鍵名的數(shù)組。這樣你就可以隨機(jī)從數(shù)組中取出鍵名和值。
主要是用array_rand()方法
直接用select * from student order by rand() limit 5不是一個(gè)很好的習(xí)慣,這個(gè)要考慮到數(shù)據(jù)庫(kù)的大小問(wèn)題,比如,數(shù)據(jù)量為10W以上,這樣查詢的效率是非常低的,資源也消耗挺多!你可以考慮在php與mysql結(jié)合來(lái)實(shí)現(xiàn),比如:先用mysql 的count()計(jì)算出student的總條數(shù)$sum_num,賦值到php中的變量中,后在php中更具這個(gè)總條數(shù)進(jìn)行生成隨機(jī)數(shù)(這里涉及到你的5條數(shù)據(jù)是否為連續(xù)的5條隨機(jī)數(shù),還是打亂的隨機(jī)五條),這里如果生成連續(xù)的數(shù)據(jù)就只需要生成一個(gè)小于$sum_num-5的隨機(jī)數(shù)就可以了!根據(jù)這個(gè)隨機(jī)數(shù)進(jìn)行l(wèi)imit取出5條就可以;如果這里需要生成打亂的隨機(jī)數(shù),就需要生成5個(gè)不相同的并且小于$sum_num隨機(jī)數(shù),最后根據(jù)這些隨機(jī)數(shù)在數(shù)據(jù)庫(kù)中查詢,第一種情況用到limit 隨機(jī)數(shù),5;;第二種情況用到in(隨機(jī)數(shù)1,隨機(jī)數(shù)2,隨機(jī)數(shù)3,隨機(jī)數(shù)4,隨機(jī)數(shù)5);在數(shù)據(jù)量大的情況下,這樣的效率和資源消耗的情況下都要比select * from student order by rand() limit 5好得多,當(dāng)然如果數(shù)據(jù)量不多的話就用這個(gè)也可以!只是給你普及個(gè)知識(shí)!祝你學(xué)習(xí)愉快!(這里暫且認(rèn)為你會(huì)用php生成隨機(jī)數(shù)并且這里的php生成的隨機(jī)數(shù)必須為大于0的整型哦,不會(huì)的話可以先百度、google,最后可以繼續(xù)給我留言)!
這里因?yàn)槟愕膇d會(huì)有缺失所以有的方法不適用!就不一一列舉了!