我正在尝试取随机号码。使用
从数据库中输入条目SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10
它返回一列数据库。
如果我想保存数组中的所有条目,那么我必须使用哪个php函数来保存列。
答案 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)
查看有关如何运行查询并获取结果集的一些示例。
将结果输入变量后,请执行以下操作:
$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条记录,它们在数据库中彼此靠近,这意味着,它们不是随机的。