2013-05-12 5 views
-1

У меня есть эта функция:array_rand всегда возвращает то же значение PHP выборки массиву

function set_spell() { 
global $connection; 
$query = "SELECT * FROM Spells"; 
$result_set = mysqli_query($connection, $query); 
$spell_id_list = mysqli_fetch_array($result_set); 
return $spell_id_list; 

Тогда я пытаюсь вывести случайный идентификатор из массива, но я всегда получаю ID 1.

$spell_id_list = set_spell(); 
echo $spell_id_list[array_rand($spell_id_list)]; 

Когда Я запускаю этот запрос в MYSQL, я получаю список всех идентификаторов, как ожидалось. Почему этот код не выбирается случайно?

Это, наверное, глупые вопросы, которые я буду ударить себя после того, как увижу ответ ... но я застрял дольше, чем я думаю, я должен быть на нем.

Спасибо за помощь.

+0

Что вы хотите достичь? Массив случайного результата или только одно случайное значение? – Rikesh

+0

Не используйте 'global', вместо этого передайте' connection' как параметр –

+0

Прошло некоторое время, но не * _fetch_row просто получил один результат? Таким образом, не только $ spell_id_list имеет только элемент, когда возвращается set_spell? – BrianHall

ответ

2

Вы только что вернулся только один результат из вашей функции, так как создать массив из всех принесенных результатов & возвращают то же самое, или просто использовать заказ rand() в запросе,

SELECT * FROM Spells ORDER BY RAND(); 
+0

Yeh, изначально сделанный w/ORDER BY RAND() в инструкции MYSQL, но слышал, что это была не совсем случайная или хорошая практика. Как создать массив со всеми полученными результатами против одного? Как я сказал в комментарии выше, я использовал msqli_fetch_array и все равно получаю то же самое? –

+0

Просто переберитесь через 'mysqli_fetch_array' и построите результирующий массив. – Rikesh