选择一个随机数据库行,其中ID=由PHP函数创建的随机值

选择一个随机数据库行,其中ID=由PHP函数创建的随机值,php,mysql,database,codeigniter,Php,Mysql,Database,Codeigniter,如果我有一个生成随机数的PHP函数,是否可以将该变量传递到WHERE子句中的sql语句中?我使用的是CodeIgniter,所以这是我使用其语法的代码 $random = rand(1, 572); $result = $this->db->query( ' SELECT part1, part2, _id FROM `questions` WHERE `_id` >= '$random' LIMIT 0,1 '); 这可能吗 编辑:我希望php执行该随机数的原因是,我需要在

如果我有一个生成随机数的PHP函数,是否可以将该变量传递到WHERE子句中的sql语句中?我使用的是CodeIgniter,所以这是我使用其语法的代码

$random = rand(1, 572);
$result = $this->db->query( ' SELECT part1, part2, _id FROM `questions` WHERE `_id` >= '$random' LIMIT 0,1 ');
这可能吗


编辑:我希望php执行该随机数的原因是,我需要在整个页面中多次调用它,并且它需要使用sql查询再次调用另一个数据库

$query = "SELECT 
            part1, 
            part2, 
            _id 
          FROM
            questions
          WHERE _id >= " . $random . " LIMIT 0,1";
$result = $this->db->query($query);
但是如果您想要选择一个随机行,那么您可能需要这个查询

 SELECT part1, part2, _id FROM questions ORDER BY RAND() LIMIT 1 
编辑


我知道
\u id
将是随机的,但您正在为
rand()
指定
min
max
,对吗?因此,无论何时插入新行,都必须对其进行更改,或者如果要确保
rand()
不会返回太高的值,则必须使用两个查询。通过使用
orderbyrand()
您就不会遇到这两个问题。您只需获取查询返回的
\u id
值。

这可能只是在字符串外部使用双引号而不是单引号的问题

$result = $this->db->query("SELECT part1, part2, _id FROM `questions` WHERE `_id` >= '$random' LIMIT 0,1 ");
试试这个:

$result = $this->db->query("SELECT part1, part2, _id FROM questions WHERE _id >= '".$random."' LIMIT 0,1 ");

对不起,请阅读我的编辑。我需要用同一个号码打不同的电话,也需要打不同的电话database@Bert为什么不使用查询中选择的id呢?这正是它。我忘了连接它。我会尽快接受您的回答为最佳,stackoverflow会给我一段等待时间,然后我才能选择它为最佳。但是每次向数据库插入内容时,您都必须对
rand()
的最大值进行编码。如果您只是想存储ID,那么从结果中获取它。您正在从查询返回
\u id
。是的,但在执行查询之前执行
rand()
。因此,如果您想使用
COUNT()
您现在必须使用两个查询。我知道
\u id
将是随机的,但您正在为
rand()
指定
min
max
,对吗?因此,无论何时插入新行,都必须对其进行更改,或者如果要确保
rand()
不会返回太高的值,则必须使用两个查询。通过使用
orderbyrand()
您就不会遇到这两个问题。您只需获取从查询返回的
\u id
的值。您如何知道random num的存在?不要让人们说服您使用其他解决方案,反正您的方向是正确的。。。否则,您只需要学习连接字符串(在PHP中,使用句点),因为我知道我现在有572行。在未来可能会增长,那么将表中的最大行数传递给rand()函数的最佳方法是什么?@TehShrike:如果解决方案比我当前的更好,然后我个人会让其他人说服我使用这个:)当然,他们必须首先让我理解为什么他们的解决方案是正确的better@Rolando:您的解决方案是正确的,尽管您的建议(ORDER BY RAND()LIMIT 1)是错误的-您应该查看我链接的最后一篇文章!很好。