11 марта 2006

SQL RAND()

Как известно, SQL-функция RAND() возвращает случайное число, большее 0 и меньшее 1. Чтобы получить целое число в определённом диапазоне, можно использовать такой код:

SET @a = 7;

SET @b = 12;

SELECT FLOOR(@a + (RAND() * (@b - @a + 1)))


Хотя потом я подумал, что для моей задачи - а ей являлся т.н. "word verification": показ случайной картинки с написанным в ней текстом для формы регистрации пользователя, типа такой:

Поди распознай FineReader'ом :]
- лучше использовать другой запрос. Ведь картинка должна быть случайной, если пользователь только что открыл страницу с картинкой; если же он уже что-то под ней вписал, то надо показать ту же картинку.

$sql = "SELECT *
FROM `code_images`

".(0 == $id ? "ORDER BY RAND()" : "WHERE `id`=".$id)."
LIMIT 1";

0 комментов:

Отправить комментарий