Эта тема на forum.dklab.ru


SUPERMAN: Как выбрать случайную запись из БД?
Мне нужно из БД(MySQL) выбрать случайную запись,
но в ней в одном из полей photo1 или photo2 или photo3
должно быть не нулевое значение. Я это делаю вот так:

$query="SELECT * FROM $table where photo1<>'0' OR photo2<>'0' OR photo3<>'0'";
$result=mysql_query($query);
$vsego=mysql_num_rows($result);
$random=mt_rand(0, $vsego);
mysql_data_seek($result,$random);
$row=mysql_fetch_array($result);

чаще все нормально работает, но иногда выкидывается вот такая ошибка:

Warning: mysql_data_seek() :
Offset 3 is invalid for MySQL result
index 12 (or the query data is
unbuffered) in x:\home\localhost\www\include\body.inc.php on line 72

Что делать? или может есть более хороший способ?
Дмитрий Эсс:
SUPERMAN:
SELECT * FROM $table WHERE photo1<>'0' OR photo2<>'0' OR photo3<>'0' ORDER BY RAND() LIMIT 1

А в Вашем примере ошибка возникает из-за ошибки при выполнении запроса. И не забывайте про http://php.net/mt_srand .

Эта тема на forum.dklab.ru