PHP: yeniden veritabanı sınıfı

4 Cevap php

Ben yapmamı sağlayan bir sınıf inşa:

$db->query($query);

Ben istiyorsanız yapmanız rağmen o, mükemmel çalışıyor:

$db->query($query);
while($row = $db->fetch_assoc()){
    $db->query($anotherquery);
    echo $db->result();
}

o "tatili" sınıfı. Ben (örn: $ seconddb = Yeni veritabanı ()) sürekli benim sınıf redeclare zorunda istemiyorum, bu aşmanın bir yolu var mı? Ben "dışında" db yazmadan, $ db içinde db $ yeniden muktedir istiyorum. Şu anda ben db-> fetch_assoc veri bir dizi (() daha sonra bir foreach yapıyor ve o içeride db çağrı yaparak oluşturmak kulüpler:

$db->query('SELECT * FROM table');
while($row = $db->fetch_assoc()){
    $arr[] = $row;
}

foreach($arr as $a){
    $db->query(); // query and processing here
}

Bu iyi bir yöntem veya ben bariz eksik? Ben veritabanı bağlantısı ile bir bağlantı linki kimliği geçen düşünmeliyim?

4 Cevap

$db->query() daha sonra sorgu sonuçları için yineleme bir "sorgu" nesnesi dönün.

Eğer sonuç durumlarını kaydetmek gerek kalmaz () yöntemi, bir sonuca dönmek $ db-> sorgu sahip düşünmelisiniz.

Ör.

// psaudo
class DB{

  function query($sql){
    $db->query('SELECT * FROM table');
    $arr = array();
    while($row = $db->fetch_assoc()){
      $arr[] = $row;
    }
    return $arr;
  }

}

Ama yolu, sizin örnekte olduğu gibi iç içe sorgu döngü sahip büyütmek çok yavaş ve olmayabilir.

Kullanmak gerekir

$query = $this->db->query("YOUR QUERY");

foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}

my simple abstraction bakabilirsiniz