Нужна случайная выборка строк из базы данных (для капчи), использую запрос ORDER BY RAND() и обнаружил, что почему то он работает не со всеми строками таблицы, например у меня ни разу не встречаются первые 3 строки. PHP: $result4 = mysql_query ("select * from capcha ORDER BY RAND() LIMIT 1",$db); $myrow4 = mysql_fetch_array($result4); Вот структура таблицы capcha Кто нибудь знает почему первые 3 строки не участвуют в рандомной выборке ?
bybad 1. Зачем ты отдаешь заранее сгенерированную капчу? 2. Не используй ORDER BY RAND() - это нереально медленная вещь. Хотя на таблице из 11 записей ты этого не заметишь 3. Работает со всеми. Убедись в этом, оставив только те, которых нет в результате, и удалив остальные.
1.Это пока всё на локальной машине, собираю всё в кучу, капчи будут другие, так что можно не переживать. 2.Ну планирую запихнуть капчей 300-500, читал в инете что до 1000 работает незаметно. 3.Оставлял только первые 5, показывались только 4 и 5 строки ! П.С. Если не использовать ORDER BY RAND() тогда подскажите пожалуйста каким способом это сделать лучше ? "Програмлю" совсем недавно и ещё мало в чём разбираюсь, пробовал адаптировать http://www.php.ru/forum/viewtopic.p...EB%F3%F7%E0%E9%ED%E0%FF+%E2%FB%E1%EE%F0%EA%E0этот код под себя - не получилось.
Какая разница, на локальной или на глобальной. Зачем вообще ты хранишь в базе варианты капчи? Зачем тебе вообще заранее сгенерированные варианты капчи?
Интересно, в ответ на мои вопросы слышу только вопросы. Выше я написал: если есть то чего я не знаю, буду рад если поделитесь.
PHP: <?php $limit['limit']='1'; //сколько обработать записей сразу, по 1. for($i=1;$i<=$limit['limit'];$i++) { $a=mysql_query("SELECT img FROM comments_setting", $db) or die (mysql_error()); while($с=mysql_fetch_array($a)){$img[]=$с['img'];} shuffle($img); $rand=$img[rand(0,count($img)+1)]; } ?> Это подойдёт для случайной выборки ? если да то буду под себя настраивать пробовать.