2012-04-14 3 views
7

Kann mir jemand sagen, wenn Sie zum Beispiel aktualisieren, einfügen, löschen .. sollten Sie es dann schließen wie mysqli_stmt::close();? Ich überprüfte PHP-Handbuch und verstehe nicht, was close() tatsächlich tut.Was bedeutet die `close()` Methode der Mysqli-Anweisung?

Beispiel:

$stmt = $dbh->prepare("SELECT `user_email` FROM `users` WHERE `user_email` = ? LIMIT 1"); 
$stmt->execute(array($email)); 
$stmt->close(); 

nächste Teil meiner Frage ist, wenn als Beispiel i für jede Abfrage jedes execute() mehrere Update-Abfragen in einer Transaktion nach hatte ich innerhalb der Transaktion bin Ausführung sollte ich sie einzeln schließen? ... weil es eine Transaktion ist nicht sicher, ich brauche $stmt->close(); nach jedem execute(); oder benutzen Sie einfach eine $stmt->close(); nach allen von ihnen?

+5

Mit welcher "nahen" Methode meinen Sie? Es gibt nur "PDOStatement :: closeCursor", das einen ähnlichen Namen hat ... – Jon

+0

verwandte Frage http://StackOverflow.com/Questions/1046614/Do-sql-connections-opened-with-pdo-in-php-have- zu schließen – Ozzy

+0

@Jon ich habe verwirrt, antwortete ich auf Kommentare unten, danke phplover – PHPLOVER

Antwort

3

Es scheint, als ob Sie die mysqli close-Methode verwenden. Die Methode $ stmt-> close() schließt einfach die zuvor geöffnete Datenbank connect (http://www.php.net/manual/en/mysqli.close.php).

EDIT: Wenn es PDO ist, die Sie verwenden, verstehe ich einfach nicht, warum Sie nicht die Möglichkeit nutzen, Parameter anstelle von Fragezeichen benannt zu haben. Das ist der Grund, warum viele Leute PDO anstelle von mysqli wählen - Sie haben vielleicht eine bessere Übersicht über die Abfragen/Anweisungen.

+0

Ich bin neu in pdo und sah es irgendwo $ stmt-> close() und dachte, es bedeutete schließen die vorbereitete Anweisung und $ stmt = null wird die Verbindung schließen, so dass Sie im Grunde nur $ stmt-> close() verwenden mysqli prozeduralen Stil? (dh ich würde $ stmt-> close() nicht für Beispielanweisungen verwenden, die ich in meinem ursprünglichen Post gegeben habe)? stattdessen würde ich $ stmt = null verwenden; um die Verbindung zu db zu schließen? danke phplover – PHPLOVER

+2

Nicht genau. $ stmt-> close() ist für mysqli OOP style, mysql_close oder mysqli_close ist der prozedurale Stil von mysql (i). Und ja, um die Verbindung zur Datenbank in PDO zu schließen, setzen Sie einfach die Anweisung auf NULL. – hskrijelj

+0

Danke, jetzt verstehe ich :) danke phplover – PHPLOVER

9

Es gibt keine close() - Methode für PDO, stattdessen zum Schließen einer Verbindung setzen Sie einfach die Datenbankvariable auf null - wodurch die Verbindung geschlossen wird.

$stmt = null; 

Um Ihre zweite Frage zu beantworten, müssen Sie die Verbindung nur einmal schließen. Nachdem Sie alle Abfragen ausgeführt haben, die Sie für die Datenbank ausführen müssen.

+0

Thannk du, verwirrt mich, erklärte gut, danke phplover – PHPLOVER