开发者

Select a Random Database Row WHERE ID=a random value created by PHP function

开发者 https://www.devze.com 2023-04-04 05:13 出处:网络
If I have a PHP function that generates a random number, is it possible to pass that variable into the sql statement in the WHERE clause? I\'m using CodeIgniter, so this is my code using its syntax.

If I have a PHP function that generates a random number, is it possible to pass that variable into the sql statement in the WHERE clause? I'm using CodeIgniter, so this is my code using its syntax.

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

Is this even possible to do?

EDIT: The reason I want开发者_如何学运维 the php to execute the random number is because I need to call it multiple times throughout my pages, and it needs to do another call to another database using a sql query


Yes it is possible if you concatenate the variable with the string:

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

But if what you want is to select a random row, then you might want this query

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

EDIT

I understand that _id will be random, but you are specifying the min and max for rand(), right? So you'd have to change it whenever you insert a new row, or you'd have to use two queries if you want to make sure rand() does not return a value too high. By using ORDER BY RAND() you are free from both problems. You simply have to get the value of _id that was returned from the query.


This might just be a mater of using double quotes instead of single quotes on the outside of your string.

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


Try this:

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

精彩评论

暂无评论...
验证码 换一张
取 消