Dizideki bir sütun tasarruf

5 Cevap php

Ben rastgele hayır almaya çalışıyorum. kullanarak bir veritabanından girdileri

SELECT QNO FROM TABLE  ORDER BY RAND() LIMIT 10

bu veritabanının bir sütun döndürür.

Ben, bir dizideki tüm girdileri kaydetmek istiyorsanız o zaman hangi php fonksiyonu ben sütununu kaydetmek için kullanmak zorunda.

5 Cevap

Bu satırlar boyunca bir şey?

$result = mysql_query("SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10");
$rows = array();
while ($row = mysql_fetch_row($result)) {
    $rows[] = $row[0];
}

İlk yazı ve yorumunda belirttiği gibi $ i değişkeni kullanmak için güncellendi.

Look at some examples for how to run a query and get a result set.

http://www.php.net/mysqli

Eğer bir değişken bir sonuç var, bunu:

$myarray = array();
while($row = mysqli_fetch_row($result))
   $myarray[] = $row[0];

PDO ile:

$qryStmt = $dbc->query('SELECT QNO FROM TABLE ORDER BY RAND() LIMIT 10');
$a = $qryStmt->fetchAll( PDO::FETCH_COLUMN );

BTW: Sadece rastgele bir satır almak istiyorsanız, bu çok daha hızlı esp olduğunu. büyük tablolar için:

masa limitinin 12345,1 seçin *;

12345 satır sayısı () hesaplanan sadece rastgele bir sayıdır.

see here, raylar için daha fazla, ama çok yorumlarına bir göz sahip olan.

Ancak dikkatli olun: limiti 12345,2 - ikinci sıra rastgele satır sonra rastgele ama sadece bir sonraki satır değildir. Ve dikkatli olun: Ben sağ (örneğin SQL Server) rand hatırlıyorum zaman () sonuç rastgele değil kılan tüm satırlar için aynı rasgele sayı ortaya mysql başka veritabanları ile optimize edilebilir. Kodunuzu veritabanı agnostik olmalıdır zaman bu önemlidir.

Bir sonuncusu: aynı değildir, "tahmin etmek zor" ile "rastgele" kadar karışmaz. Eğer 10 kayıtlarına bakarsanız, onlar, db birbirine yakın yalan: Yani örneğin tarafından sipariş iki kez çalıştırdığınızda, iki farklı sonuç kümeleri SQLSunucusu sonuçları ") (rand tarafından ilk 10 ... sırasını seçmek", AMA anlamına gelir, bunlar rastgele değildir.