我試圖抓取隨機數。通過使用來自數據庫的條目在數組中保存一列
SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10
它返回一列數據庫。
如果我想保存一個數組中的所有條目,那麼我必須使用哪個php函數來保存該列。
我試圖抓取隨機數。通過使用來自數據庫的條目在數組中保存一列
SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10
它返回一列數據庫。
如果我想保存一個數組中的所有條目,那麼我必須使用哪個php函數來保存該列。
沿此線的東西嗎?
$result = mysql_query("SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10");
$rows = array();
while ($row = mysql_fetch_row($result)) {
$rows[] = $row[0];
}
更新爲不使用$ i變量,如第一篇文章和評論中指出的那樣。
查看一些示例,瞭解如何運行查詢並獲取結果集。
一旦有結果的變量,這樣做:
$myarray = array();
while($row = mysqli_fetch_row($result))
$myarray[] = $row[0];
隨着PDO:
$qryStmt = $dbc->query('SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10');
$a = $qryStmt->fetchAll(PDO::FETCH_COLUMN);
我想你想PDO :: FETCH_COLUMN而不是PDO :: FETCH_ASSOC – 2009-06-12 08:51:59
順便說一句:如果你只是想通過隨機獲得一排,這是更快的ESP。對於大型表格:
select * from table limit 12345,1;
其中12345只是從count()行計算得出的隨機數。
see here,這是更多的軌道,但也看看評論。
但要小心:在限制12345,2 - 第二行不是隨機的,而是隨機行之後的下一行。並且要小心:當我記得正確的時候(比如SQLServer),rand()可以被mysql以外的數據庫優化,導致所有行的隨機數相同,從而導致結果不是隨機的。這很重要,當你的代碼應該是數據庫不可知的。
最後一個:不要混淆「隨機」與「難以預測」,這是不一樣的。因此,SQLServer上的示例「select top 10 ... order by rand()」的順序在運行兩次時會產生兩個不同的結果集,但是:如果查看10條記錄,它們在db中彼此靠近,這意味着,它們不是隨機的。
你實際上並不需要計數器($ i)。如果你只是分配給$ rows [],它會自動在數組的末尾創建一個新的「插槽」。 – 2009-06-12 06:53:13