2016-02-03 84 views
0

我指thisPHP - 關閉準備報告

我有類似

function getData(){ 
    $query = "SELECT * FROM users WHERE emailID=?"; 
    $stmt = mysqli_prepare($query); 
    if(false == $stmt){ 
     //handleerror Call 
    } 
    $bindParam = mysqli_stmt_bindParam($stmt,"s","[email protected]"); 
    if(false == $bindParam){ 
     **Do I need to close stmt here?** 
     //handleError 
    } 
    $execute = mysqli_stmt_execute($stmt); 
    if(false == $execute){ 
     **Do I need to close stmt here?** 
     //handle error 
    } 
    **Or Stmt will automatically get closed at the end of a function?** 
    } 

任何建議如何關閉語句?

我的疑問是,我應該在哪裏打電話?或者,PHP會在函數結束時自動關閉每條語句?因爲範圍在那裏結束。

我知道如何打電話。但我想知道應該在這種情況下調用,還是會在函數結束時自動關閉php。

+0

'mysqli_close_stmt($ stmt)'你在php手冊頁上沒有理解什麼? –

+0

@CharlotteDunois我懷疑我應該在哪裏打電話?或者,PHP會在函數結束時自動關閉每條語句?因爲範圍在那裏結束。 –

+0

我不認爲你需要手動關閉語句,只要你不需要獲取大量數據並且需要內存。 –

回答

0
$stmt->close(); 

它將關閉該聲明。

+0

他甚至不使用對象! –

0

如果你自己沒有關閉它,PHP會在腳本/函數結束時執行它。但是當你不再需要它時,你應該「關閉它」。比如說,當發生錯誤時,你可能不需要它。

function getData(){ 
$query = "SELECT * FROM users WHERE emailID=?"; 
$stmt = mysqli_prepare($query); 
if(false == $stmt){ 
    //handleerror Call 
} 
$bindParam = mysqli_stmt_bindParam($stmt,"s","[email protected]"); 
if(false == $bindParam){ 
    //handleError 
    mysqli_close_stmt($stmt) 
    print "Binding failed"; 
} 
$execute = mysqli_stmt_execute($stmt); 
if(false == $execute){ 
    mysqli_close_stmt($stmt) 
    //handle error 
} 
//if you haven't closed, PHP will close it now 
}