MYSQL – выборка случайных строк при помощи php

Интересная картинка получилась для статьи ))) Недавно мы рассматривали всемирно известную функцию MySQL RAND() и ее аналог на чистом языке запросов SQL для выборки случайных строк на больших базах.

Функция помогающая mysql_fetch_assoc создать “правильный” массив:

<?
function fetchAll( $queryResult ) {
  $data = array();
  if( $queryResult ) {
    while( $row = mysql_fetch_assoc($queryResult) ) {
      $data[] = $row;
    }
  }
  return $data;
}
?>

Функция, которая возвращает необходимое количество строк:

<?
function getRandomRows($howMuch) {
  $result = array();
  $getIdsQuery = 'SELECT `id` FROM `table`';
  $ids = fetchAll( mysql_query( $getIdsQuery ) );
  if( $ids ) {
    $idsTotal = count($ids);
    $howMuch = $howMuch <= $idsTotal ? $howMuch : $idsTotal;
    $randomUniqueIndexes = array_rand( $ids, $howMuch );
    $randIdsArray = array();
    for( $i=0; $i<$howMuch; ++$i ) {
      $randIdsArray[] = $ids[ $randomUniqueIndexes[ $i ] ]['id'];
    }
    $finalQuery = 'SELECT * FROM `table` WHERE  `id` IN ('. implode(', ', $randIdsArray) .')';
    $result = fetchAll(mysql_query($finalQuery));
  }
  return $result;
}
?>

Пример использования:

$randArticles = getRandomRows(10);


Поделиться с друзьями:

Другие публикации:



Написать комментарий через:

 
       
  • ВКонтакте
  •        
  • Локальный блог
  •  
 
 

Ваш отзыв

Имя *

Почта (скрыта) *

Сайт

Напишите цифрами двa вoceмь двa *

Сообщение

 
Статьи пользователей на ArtKiev Design Studio