2012-04-09 122 views
0

我有一個只有兩列的SQL表:「nameid」和「name」。我想從數據庫中獲取一個隨機名稱。學說:從名稱表中獲取一個隨機名稱

我確實在這之前通過:

$result = mysql_query("SELECT * FROM nametable",$db); 
    $number = mysql_num_rows($result); 
    $random = rand(1,$number); 
    list($name) = mysql_fetch_row(mysql_query("SELECT name FROM nametable WHERE nameid=$random",$db)); 

我怎樣才能做到與學說一樣嗎?

回答

0

MySQL有一個函數用於生成隨機浮點值RAND()。按此排序時,名稱將隨機排序。在此之後,您只需選擇第一個隨機排序的名稱即可。

SELECT name FROM nametable ORDER BY RAND() LIMIT 1 

教義,這可以用

$name = Doctrine::getTable('nametable') 
    ->createQuery() 
    ->select('name') 
    ->orderBy('RAND()') 
    ->fetchOne(); 
+0

謝謝你做!我不認爲你知道CodeIgniter2 + Doctrine2會出現這種情況。 :) – jeremy 2012-04-09 18:09:32

+0

我相信在CodeIgniter中使用Doctrine將與上面相同。如果你想使用Codeigniter的活動記錄,它就像''this-> db-> select('name') - > from('nametables') - > order_by('name','random') - >限制(1)'。 – kba 2012-04-09 19:07:46