2010-03-07 52 views
1

我建立了一個類,允許我做:PHP:重用數據庫類

$db->query($query); 

和它完美的作品,但如果我想做的事:

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

它「休息」之類的。我不想經常重新聲明我的類(例如:$ seconddb = new database()),有沒有辦法解決這個問題?我希望能夠在$ db中重複使用$ db,而不會覆蓋「外部」數據庫。我目前創建一組數據(來自DB-> FETCH_ASSOC(),然後做一個foreach,然後做內部的DB調用:

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

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

這是最好的方法還是我失去了明顯的應該我考慮通過一個連接鏈路ID與數據庫的連接?

+0

只是好奇,這將是很好的你,如果你使用ADOdb的圖書館嗎? http://adodb.sourceforge.net/ – Nirmal 2010-03-08 00:07:46

回答

2

有無$db->query()返回一個「查詢」對象,然後您可以遍歷的查詢結果。

1

您應該考慮具有$ DB->查詢()方法返回結果,因此不需要將結果保存在結果中。

Ex。

// psaudo 
class DB{ 

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

} 

但是,你的例子有一個嵌套的查詢循環的方式可能會非常緩慢,而不是放大。

1

您應該使用

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

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