Kullandıktan sonra mysql_fetch_array ile oluşturulan diziler () kayboluyor?

2 Cevap php

Ben tipik bir veritabanı sorgu var:

$query = mysql_query('SELECT titulo,referencia FROM cursos WHERE tipo=1 AND estado=1');

ve ben bir dizi dönüştürmek ve veri yazdırabilirsiniz:

while ($results=mysql_fetch_array($query)): ?>
echo $results['referencia'];
// and so...
endwhile;

ancak bazı durumlarda ben web sayfasının başka bir yerinde aynı verileri yazdırmak gerekiyor, ama $ sonuçları array (I var_dump($results) kullanmak ve almak bool(false)) boş görünüyor. I Create PHP array from MySQL column Ben okurken öğrendiklerini kullanmayı planlıyorsanız, ama mysql_fetch_array() bir dizi oluşturur gerekmiyor? Peki, ne olur?

2 Cevap

Tae, sizin $result false while döngünün sonunda olduğunu sebebi mysql_fetch_array döner {[ (1)]} bu sorgu setin sonuna ulaştığında. Eğer sorgu kümesindeki $results false ve while döngü ayarlandığında sonuna ulaştığınızda (PHP Docs konuda bakınız) çıkılır. Daha sonra için diziler (veritabanı satır sonuçları) kaydetmek istiyorsanız Chacha102 anlaşılacağı gibi, daha sonra yapılacak ve veritabanından çekilir gibi her satır saklayın.

$data = array();
while($results = mysql_fetch_array($query)) {
    $data[] = $results;
}
foreach ($data as $result_row) {
    echo $result_row['referencia'];
    ... etc.
}

Bu deneyin

while($results = mysql_fetch_array($query))
{
    $data[] = $results;
}

Şimdi, tüm sonuçları $data vardır ve siz oradan istediğinizi yapabilirsiniz.


Anthony dediği gibi, veri aslında sorguya alınıyor emin olmak isteyebilirsiniz. Herhangi bir sonuç echo mysql_num_rows($query) tarafından iade ediliyor olmadığını kontrol edin. İşte size aldım satır sayısını vermelidir