2011-07-08 46 views
18

何時關閉PHP中的預處理語句?何時關閉Prepared Statement

例子:

$query = "insert into web_reviews (title,added_date,reviewer_home_url,read_more_link,summary) values(?,?,?,?,?)"; 
    $stmt = $this->db->prepare($query); 
    $stmt->bind_params($this->title,$this->added_date,$this->reviewer_home_url,$this->read_more,$this->summary); 
    $stmt->execute() or die("Cannot add the date to the database, please try again."); 
    $stmt->close(); 

    $stmt = $this->db->prepare("select id from web_reviews where title = ? and read_more = ?"); 
    $stmt->bind_params($this->title,$this->read_more); 
    $stmt->execute(); 
    $stmt->bind_results($web_review_id); 
    $stmt->close(); 

我應該使用$stmt->close();這裏?

編輯:

什麼是寫在PHP手冊,也從手動一個評論說:

關閉一個準備好的聲明。 mysqli_stmt_close()還釋放了 語句句柄。如果當前 語句有未決或未讀 結果,則此函數將取消它們,以便 可以執行下一個查詢。

評論:

如果您在使用 和bind_param等 裏面的一個大動作的重複的語句中的循環。我 thougt ID將是很好的清潔它 stmt->關閉。但它總是打破 與aprox後出現錯誤。 250 操作。當我用 stmt->重試它爲我工作。

+0

我好奇同樣的事情......看着這個線程! – Drewdin

回答

7

這是一個很好的使用關閉,尤其是因爲你正在計劃進行另一個查詢。通過PDO語句和MySQLi語句,我發現在清潔方面犯錯幾乎總是最好 - 它消除了潛在的錯誤。

至於有250個操作的紳士......我不明白真正的用例是什麼。爲什麼他需要在不同的時間查詢250個數據庫?爲什麼他不能用250條記錄查詢數據庫?或者更可能的是,爲什麼他不能用10條記錄查詢數據庫25次?

+0

你是否說它只對清潔有益?因爲我有問題,當我使用兩個準備語句而不關閉第一個時,我得到一個錯誤(請參閱http://stackoverflow.com/questions/37164371/php-prepare-method-not-working-when-calling-it -兩次)。不太清楚爲什麼,因爲我從來沒有讀過這是至關重要的 – Adam

相關問題