PHP / MySQL - Nasıl bir verilen sorgu sonucu gelen alan adları determin mı?

7 Cevap php

Bir sonuç kümesi, nasıl sorgu (NOT onların takma ad) belirtilen alanların gerçek isimleri determin olabilir göz önüne alındığında.

$query = "SELECT first AS First_Name, last AS Last_Name FROM people";
$dbResult = mysql_query($query);

$fieldCount = mysql_num_fields($dbResult);
for ($i=0; $i<$fieldCount; $i++) {  		
    // Set some values
    $fieldName = mysql_field_name($dbResult, $i);
}

Bu örnek alan adlarını verir, fakat bu örnekte yerine "ilk" gerçek alan adı takma "First_name" döndürür.

Böyle bir sorgudan gerçek alan adı almak mümkündür. Ben bir işlevi yazma ve ona atılır ne sorgu hiçbir fikrim yok ediyorum özellikle.

7 Cevap

Eğer mysqli kullanıyorsanız:

http://www.php.net/manual/en/mysqli-result.fetch-field.php

Alan nesne bir "orgname" özelliği vardır.

"Klasik" MySQL eşdeğer işlev orijinal sütun adlarını geri bildirmez.

Kısa cevap: yok.

Uzun cevap: dataset MySQL tarafından çekilen ve geri PHP gönderildikten sonra, PHP şimdi sahip tek bilgi sütunları, ya da onları kullanıldığında adlar olduğunu. Bir sonuç kümesi bakmak ve özgün sütun adları ne olduğunu belirlemek için hiçbir yolu yoktur. Sen mysqli bu bilgi elde etmek gibi başka bir DB sürücüye geçmek zorunda.

Your question doesn't make sense. What are you going to do if you get a derived column i.e.

siparişleri order_total olarak column_a + column_b seçin;

Eğer özgün sorgu column_a + kolon b olduğunu bilmek istiyorum diyorsun?

eğer öyleyse, muhtemelen bir sorgu ayrıştırıcı yazmak, ya da internet kapalı bir tane almak gerekiyor.

Bundan uygulama olsa sorunun kapsamı dışında olduğunu düşünüyorum :)

Ben bu konuda% 100 emin değilim, ama diyorum ki: bir yolu yoktur.

MySQL size sonuç kümesini, daha hiçbir şey geri verir. Bu deyim, ne de bu konuda herhangi bir ayrıntı vermez.

Takma adları: Sunucu size sorulan bilgileri sağlayacak, çünkü böylece orijinal alan adlarını alamıyor.

If you don't mind making a second query (and your using MySQL 5 or greater) you can ask information_schema for the names. Check out MySQL Reference for the details:

Tbl_name DAN sütunları göster;

if you have access to the string of the query you could try a regular expression to parse it. I'm no regex master but you could chop up the string by looking at the text between 'select' and 'from' then grabbing all the field names as either

 field FieldAlias

veya

 field as FieldAlias

Yukarıda koduna SQL-az arayüz sunmak ve tüm SQL nesil kendisini yönetmek için doğru yapmak için tek yoldur - Eğer alanları güncelleştirmeleri işlemek için getirilen ne bildirmek için bazı işlevler yazmaya çalışıyoruz. Bu bir veri soyutlama katmanı denir.