Dönüş veri türleri tespit otomatik mysql_fetch_assoc yap?

2 Cevap php

PHP mysql_fetch_assoc kullanırken, nasıl ben bunu doğru veri türleri geri yapabilir? Şu anda bu dizeleri her şeyi dönüştürmek için görünen o Ints olarak Ints sol, ve bir şekilde ya Object veya dizeleri den biraz farklı olarak Tarih / Saat belirlenmiş, ben tercih ederim.

Bunun nedeni bir Flex uygulaması için bir arka uç olarak PHP kullanıyorum ve Flex bu otomatik şeyi bir dize olarak gelirse bu işe yok dönüş türleri, tespit gibi bazı özelliklere sahip olmasıdır.

2 Cevap

Burada iyi bir strateji programlama, bir tablodaki her sütunun veri türünü belirlemek ve buna göre döndürülen sonuçları döküm olduğunu düşünüyorum. Bu hala size değişkenleri doğru veri türünü depolama olması gerekir kontrol vererek daha tutarlı ve basit bir şekilde veritabanı ile etkileşim sağlayacak.

One possible solution: Sen tablo sütun hakkında meta verilerini tutan bir nesne almak için) (mysql_fetch_field kullanın ve daha sonra geri istenen türüne sizin dize döküm olabilir.

//run query and get field information about the row in the table
$meta = mysql_fetch_field($result, $i);

//get the field type of the current column
$fieldType = $meta->type

Tam bir örnek burada bulunabilir: http://us2.php.net/manual/en/function.mysql-fetch-field.php

PHP gevşek yazdığınız olduğundan, bu ile nispeten kolay bir zaman olmalıdır.

Eğer OO (nesne yönelimli) teknikleri kullanılarak eğer yinelenen kodu olması gerekmez yüzden, sen pasör () yöntemleri bu işlevselliği ile bir sınıf oluşturmak olabilir.

Otomatik SHOW COLUMNS komutunu kullanarak alan türlerini algılayan mdb2 etrafında bir mysql-belirli bir katmanı inşa edebileceğini, ancak bu tür mdb2 kullanmanın amacı yenilgi olacaktır.

Unutmayın, aynı zamanda, bu mysql de PHP'nin aralığının dışında tamsayılar suports, (UNSIGNED BIGINT 64 bit olup; PHP 64 bit signed ints, en iyi, destekler ve 32 bit platformlarda daha az) yani otomatik döküm bazı bağlamlarda istenmeyebilir. Bu gibi durumlarda, gerçekten onların dize şeklinde büyük İnts tutmak, ve bcmath ile onları manipüle etmek istiyorum