2012-04-14 4 views
7

Qualcuno può dirmi, quando per esempio aggiorni, inserisci, cancella .. dovresti chiuderlo come mysqli_stmt::close();? Ho controllato il manuale PHP e non capisco cosa fa effettivamente lo close().Che cosa significa il metodo `close()` dell'istruzione Mysqli?

Esempio:

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

parte successiva della mia domanda è, se ad esempio ho avuto più query di aggiornamento in un un'operazione dopo ogni execute() per ogni query sto eseguendo all'interno del transazione dovrebbero i chiudili individualmente? ... perché è una transazione non è sicuro che ho bisogno di usare $stmt->close(); dopo ogni execute(); o semplicemente usare uno $stmt->close(); dopo tutti loro?

+5

A che metodo si sta riferendo? C'è solo 'PDOStatement :: closeCursor' che ha un nome simile ... – Jon

+0

domanda correlata http://stackoverflow.com/questions/1046614/do-sql-connections-opened-with-pdo-in-php-have- to-be-closed – Ozzy

+0

@Jon mi sono confuso, ho risposto ai commenti di seguito, grazie phplover – PHPLOVER

risposta

3

Sembra che tu stia usando il metodo mysqli close. Il metodo $ stmt-> close() semplicemente si chiude semplicemente chiude la connessione del database aperto precedente (http://www.php.net/manual/en/mysqli.close.php).

MODIFICA: Se si tratta di PDO che si sta utilizzando, semplicemente non capisco, perché non sfruttare la possibilità di avere parametres denominati anziché punti interrogativi. Cioè, perché molte persone scelgono PDO invece di mysqli - si potrebbe avere una visione più completa delle query/dichiarazioni.

+0

sono nuovo a pdo e l'ho visto da qualche parte $ stmt-> close() e pensavo volesse chiudere l'istruzione preparata e $ stmt = null chiuderà la connessione, quindi in pratica usi solo $ stmt-> close() se usi il stile procedurale mysqli? (cioè non vorrei usare $ stmt-> close() nella dichiarazione di esempio che ho dato nel mio post originale)? invece vorrei usare $ stmt = null; chiudere la connessione a db? grazie phplover – PHPLOVER

+2

Non esattamente. $ stmt-> close() è per mysqli stile OOP, mysql_close o mysqli_close è lo stile procedurale mysql (i). E sì, per chiudere la connessione al database in PDO, è sufficiente impostare l'istruzione su NULL. – hskrijelj

+0

Grazie, ora capisco :) grazie phplover – PHPLOVER

9

Non esiste un metodo close() per PDO, invece di chiudere una connessione è sufficiente impostare la variabile del database su null - che chiuderà la connessione.

$stmt = null; 

Per rispondere alla seconda domanda, è necessario chiudere la connessione solo una volta. Dopo aver eseguito tutte le query che devi eseguire sul database.

+0

Thannk, mi sono confuso, ho spiegato bene, grazie phplover – PHPLOVER