2012-04-09 77 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