在数组中保存列

时间:2009-06-12 03:44:07

标签: php sql

我正在尝试取随机号码。使用

从数据库中输入条目
SELECT QNO FROM TABLE  ORDER BY RAND() LIMIT 10

它返回一列数据库。

如果我想保存数组中的所有条目,那么我必须使用哪个php函数来保存列。

5 个答案:

答案 0 :(得分:2)

有什么事情吗?

$result = mysql_query("SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10");
$rows = array();
while ($row = mysql_fetch_row($result)) {
    $rows[] = $row[0];
}

更新为不使用第一篇文章和评论中指出的$ i变量。

答案 1 :(得分:1)

查看有关如何运行查询并获取结果集的一些示例。

http://www.php.net/mysqli

将结果输入变量后,请执行以下操作:

$myarray = array();
while($row = mysqli_fetch_row($result))
   $myarray[] = $row[0];

答案 2 :(得分:1)

使用PDO:

$qryStmt = $dbc->query('SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10');
$a = $qryStmt->fetchAll( PDO::FETCH_COLUMN );

答案 3 :(得分:0)

顺便说一句:如果你只是想随机获得一行,这就更快了。对于大表:

从表限制12345,1中选择*;

其中12345只是从行的count()计算的随机数。

see here,更多关于rails,但也看一下评论。

但要小心:在限制12345,2中 - 第二行不是随机的,而只是随机行之后的下一行。并且要小心:当我记得正确(例如SQLServer)时,rand()可以通过mysql之外的数据库进行优化,从而导致所有行的相同随机数,这使得结果不是随机的。当您的代码与数据库无关时,这很重要。

答案 4 :(得分:0)

最后一个:不要将“随机”和“难以预测”混为一谈,这是不一样的。因此,在SQLServer上按顺序“选择前10个...按rand()顺序”会导致两次运行时产生两个不同的结果集,但是:如果查看10条记录,它们在数据库中彼此靠近,这意味着,它们不是随机的。