如果我有一个生成随机数的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查询再次调用另一个数据库答案 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
指定了max
和rand()
,对吧?因此,无论何时插入新行,都必须更改它,或者如果要确保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 ");