КСТАТИ: Если вы просто хотите, чтобы получить одну строку случайным, это намного быстрее, особ. для больших столов:
выбрать * из таблицы предел 12345,1;
где 12345 - это просто случайное число, вычисленное из count() строк.
see here, что больше подходит для рельсов, но и взглянуть на комментарии.
Но будьте осторожны: в пределе 12345,2 - вторая строка не случайна, а только следующая строка после случайной строки. И будьте осторожны: когда я правильно помню (например, SQLServer), rand() может быть оптимизирован с помощью баз данных, отличных от mysql, что приводит к тому же случайному числу для всех строк, что делает результат не случайным. Это важно, когда ваш код должен быть агностиком базы данных.
Вам не нужен счетчик ($ i) здесь. если вы просто назначаете $ rows [], он автоматически создаст новый «слот» в конце массива. –