我有一列有4行。我使用查询返回一个随机行,但95%的情况下,我会得到表中的第一行。除了第一排,我很少有其他的排。我在PHP中使用这个函数的方式有什么问题吗?
//Array with the data to insert
$sql_array = array(
'rightcolumn' => 'rightcolumn',
);
// Create the SQL statement
$sql = 'SELECT * FROM ' . rightcolumn . '
ORDER BY RAND() = ' . 1;
// Run the query
$result = $db->sql_query($sql);
// $row should hold the data you selected
$row = $db->sql_fetchrow($result);
// Be sure to free the result after a SELECT query
$db->sql_freeresult($result);
// Show we got the result we were looking for
echo $row['rightcolumn'];
ORDER BY RAND()
,删除=1
ORDER BY RAND
对于一个大表是非常低效的,但是4行是很好的
请记住,RAND()
返回的值在[0, 1)
范围内-RAND() = 1
表达式总是返回false。
所以你的ORDER BY
子句可以表示为ORDER BY false
,这没有什么意义。
相反,您必须按随机值排序,即:
ORDER BY RAND()
我按照上面zerkms和Dagon的指示进行了操作。
声明应为:
$sql = 'SELECT * FROM ' . rightcolumn . '
ORDER BY RAND()';