Выберите случайную строку базы данных WHERE ID = случайное значение, созданное функцией PHP - PullRequest
0 голосов
/ 13 сентября 2011

Если у меня есть функция PHP, которая генерирует случайное число, можно ли передать эту переменную в оператор sql в предложении WHERE? Я использую CodeIgniter, так что это мой код с использованием его синтаксиса.

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

Это вообще возможно сделать?

РЕДАКТИРОВАТЬ: причина, по которой я хочу, чтобы php выполнил случайное число, заключается в том, что мне нужно вызывать его несколько раз на всех страницах, и ему нужно сделать еще один вызов в другую базу данных, используя SQL-запрос

Ответы [ 3 ]

1 голос
/ 13 сентября 2011

Да, это возможно, если вы объедините переменную со строкой:

$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 

EDIT

Я понимаю, что _id будет случайным, но вы указываете min и max для rand(), верно? Поэтому вам придется менять его всякий раз, когда вы вставляете новую строку, или вам придется использовать два запроса, если вы хотите убедиться, что rand() не возвращает слишком высокое значение. Используя ORDER BY RAND(), вы свободны от обеих проблем. Вам просто нужно получить значение _id, которое было возвращено из запроса.

0 голосов
/ 13 сентября 2011

Попробуйте это:

$result = $this->db->query("SELECT part1, part2, _id FROM questions WHERE _id >= '".$random."' LIMIT 0,1 ");
0 голосов
/ 13 сентября 2011

Это может быть просто использование двойных кавычек вместо одинарных кавычек на внешней стороне вашей строки.

$result = $this->db->query("SELECT part1, part2, _id FROM `questions` WHERE `_id` >= '$random' LIMIT 0,1 ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...