SQL sorgusu bir iki boyutlu dizi döndürme

3 Cevap php

Bir SQL sorgusu iki boyutlu bir dizi dönmek için bir yolu var mı? Gibi ..

"Test DAN id, x, y, z SEÇ"

.. Ve id => x, y, z gibi geri dönmek var mı? Ben bir döngü yapmak ve ikinci bir dizi oluşturmak ama bunu ben yapmak zorunda olmayabilir ekstra bir iş düşünebiliriz. Şu anda SQL ile sadece aşina değil.

3 Cevap

PHP, SQL sorguları sadece sonuç kümeleri dönecektir. Satırlar ve sütunlar.

Eğer başvuruyorsunuz türden bir dizi içine işlemek için bir başka döngü gerekir. Bu sorun yok, ve sık kullanmak eğer veritabanı sarıcı bir parçası olmalıdır.

$result = mysql_query(...);
$aData = array();
while($row = mysql_fetch_assoc($result))
   $aData[$row['id']] = array($row['x'], $row['y'], $row['z']);

Sorunuzun cevabı hayır, bunu yapmak için hiçbir yolu yoktur edilir.

İlişkisel veritabanı esas olarak iki boyutlu bir yapı bulunmaktadır. Onlar yapılar arasındaki ilişkileri temsil edebilir, ancak tüm verilerin bir düz, iki boyutlu bir şekilde depolanır ve sorgulanan ve gibi döndürülür. Ne yazık ki, programlama dilleri onlara sahip olduğunu aynı şekilde veri yapıları kavramı yoktur. Bir SQL sorgusu olsun herhangi bir sonuç hep alanları ve değerlerin bir skaler veri seti olacak. PHP bu dizi tuşları ve dizi değerleri olarak alan değerleri olarak sütun adlarını döndürerek biraz daha kolay hale getirir, ama bu kadarıyla alabilirsiniz bulunuyor.

Eğer veritabanından sonuçlar alındı ​​ettik sonra çok boyutlu bir diziye koymak sonuçları için, PHP ile bunu yapmak zorunda olacak.

Satır başına aynı alanlara sahip birden fazla satır, her - SQL zaten veri 2D setleri döndürür. Eğer SELECT id, x, y, z FROM test, bu id, x, y geri olacak ve her için z değerleri ne satır test. Aynı satırda geri çünkü id z x, y ile ilişkilidir ve bu.

Eğer y, x için id değerleri eşler ve z, yapmanız gerekecek bir PHP veri yapısı istiyorsanız deyimi SELECT ve sonuç kümesinden bu veri yapısını oluşturmak.