2011-07-08 13 views
18

PHPで準備文をいつ閉じるのですか?いつ終了するステートメント

例:

$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-> close。 aproxの後には常に が壊れてしまいました。 250 操作。私は stmt->それを試してみましたが、それは私のために働いた。

+0

私は好奇心が同じものです...このスレッドを見る! – Drewdin

答えて

7

これは、特にあなたが別のクエリを作成する予定があるため、クローズを有効に使用することです。 PDOステートメントとMySQLiステートメントの両方で、私は、クリーンさの面で間違っていることは、ほとんどの場合、最良のものであることを発見します。

250人の操作をしている紳士については、実際の使用例は何かわかりません。なぜ彼はデータベースを異なる時間に250回クエリする必要がありますか? 250レコードでデータベースを1回クエリできないのはなぜですか?あるいは、10レコードでデータベースを25回照会することができないのでしょうか?

+0

清潔にしかいいとは言いませんか?私は2つの準備文を最初に閉じずに使用するとエラーが発生するという問題があるため(http://stackoverflow.com/questions/37164371/php-prepare-method-not-working-when-calling-itツイース)。私は決してこれが重要であることを読んだことがないので、なぜ本当にわからない – Adam

関連する問題