2016-03-05 39 views
1

因此,我已經完成了一些搜索,但結果似乎有些混亂,這就是爲什麼我在這裏問。什麼是從數據庫中檢索數據並將其作爲變量傳遞的最佳方式

問題是我有一個setup.php文件,其中我預加載了需要在頁面中加載一些內容的選項,而且我不知道這是否是最佳方法。

下面是代碼:

function fetch_site_option($id){ 
    $conn=Core::getInstance()->db->prepare("SELECT value FROM options WHERE id = ?"); 
    $conn->bindParam(1,$id,PDO::PARAM_INT); 
    $conn->execute(); 
    if($conn->rowCount()==1){ 
     $data=$conn->fetch(PDO::FETCH_ASSOC); 
    }else{ 
     $data=null; 
    } 
    return $data['value']; 
} 

,並需要進行檢索的值:

$siteTitle=fetch_site_option('1'); 
$mainPage=fetch_site_option('2'); 
$debug=fetch_site_option('3'); 
$logo=fetch_site_option('4'); 
$sTT=fetch_site_option('5'); 

這重複了很多次,這就是爲什麼它需要非常有效的。

在此先感謝。

+0

您可以隨時修改您的代碼,以便它可以接受一個I​​D數組 - 然後您可以選擇ID,值FROM選項WHERE ID IN ...'在一次調用中獲取多個值;儘管您還需要修改調用代碼以從數據庫返回值中查找特定值。 – andrewsi

+0

所以一個電話應該更快,不管系統是否慢? – creptor4

回答

1

爲了提高效率,您應該嘗試將多個請求合併爲一個請求。試試這樣:

SELECT id, value FROM options WHERE id IN (?,?,?,?,?) 

這將返回一個請求中的所有必需的行。與其一次返回一個值,您應該更改函數fetch_site_option()以返回一個ID數組和數值。

相關問題