选择随机数据库行WHERE ID = PHP函数创建的随机值

时间:2011-09-13 03:19:23

标签: 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执行随机数的原因是因为我需要在整个页面中多次调用它,并且需要使用sql查询再次调用另一个数据库

3 个答案:

答案 0 :(得分:1)

是的,如果您将变量与字符串连接起来是可能的:

$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 

修改

我了解_id是随机的,但您为min指定了maxrand(),对吧?因此,无论何时插入新行,都必须更改它,或者如果要确保rand()不会返回过高的值,则必须使用两个查询。通过使用ORDER BY RAND(),您可以解决这两个问题。您只需获取从查询返回的_id的值。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

试试这个:

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