Ben bu gibi kullanılacak PHP MySQLi (usul) ve MSSQL kütüphaneleri üstüne bir, basit ince ve verimli veritabanı soyutlama katmanı, yazmaya çalışıyorum ...
while ($a = db::go('db_name')->query('select * from foo')->row()) {
print_r($a);
}
Ben sınıf yazılı var, ama sonuçlar üzerinden en iyi nasıl döngü ile biraz mücadele ediyorum. Sınıfı yalnızca seçme sorguları işlemek gerekir, ve bazı büyük sonuç kümelerini işlemek zorunda olacak. İşte ->row()
yönteminin bir parçacık bulunuyor ...
public function row() {
return $this->{'get'.ucwords($this->details['type']).'Row'}();
}
private function getMysqliRow() {
return @mysqli_fetch_assoc($this->result);
}
private function getMssqlRow() {
return @mssql_fetch_assoc($this->result);
}
Şu anda, çağrı sonsuz bir döngü içinde sonuçlanan ve sonuç kümesinde iç işaretçi while ($a = mssql_data_seek($result))
dediğimiz, yapar gibi aynı şekilde artırılır değil çünkü aynı satır her zaman almak olduğunu tam anlamda (bir sonuç kümesi küresel değil, bir anda set birden fazla sonucu işlemek gerekir!).
Yani, herkes bu bir zarif ve verimli bir şekilde biliyor mu? Veya veri fonksiyonları (mysqli_data_seek() ve mssql_data_seek()) aramak kullanımı ve sonuç kümesindeki geçerli konumuna bir işaretçi tutmak için tek çözümdür? Eğer öyleyse, bu ne kadar verimli olduğu (I> 250000 Büyük sonuç kümeleri taşıma olacak)? Ve sonucun sonuna ulaşan ise döngü kolu nasıl kurarsınız?