2012-04-14 14 views
7

¿Puede alguien decirme cuando, por ejemplo, actualizar, insertar, eliminar ... debería cerrarlo como mysqli_stmt::close();? Revisé el manual de PHP y no entiendo qué hace realmente el close().¿Qué significa el método `close()` de la instrucción Mysqli?

Ejemplo:

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

parte de mi pregunta siguiente es, si como un ejemplo que tenía múltiples consultas de actualización en una transaccióndespués de cada execute() para cada consulta Estoy ejecutando dentro del transacción ¿Debo cerrarlos individualmente? ... porque es una transacción no estoy seguro de que necesite usar $stmt->close(); después de cada ejecución(); o simplemente use un $stmt->close(); después de todos ellos?

+5

¿A qué método de "close" se está refiriendo? Solo hay 'PDOStatement :: closeCursor' que tiene un nombre similar ... – Jon

+0

pregunta relacionada http://stackoverflow.com/questions/1046614/do-sql-connections-opened-with-pdo-in-php-have- para ser cerrado – Ozzy

+0

@Jon me confundí, respondí a los comentarios a continuación, gracias phplover – PHPLOVER

Respuesta

3

Parece que está utilizando el método mysqli close. El método $ stmt-> close() simplemente se cierra y cierra la conexión de base de datos abierta anterior (http://www.php.net/manual/en/mysqli.close.php).

EDIT: Si está usando PDO, simplemente no entiendo, por qué no aprovecha la posibilidad de tener parámetros nombrados en lugar de signos de interrogación. Es decir, por qué mucha gente elige PDO en lugar de mysqli; es posible que tenga una mejor visión integral de las consultas/declaraciones.

+0

soy nuevo en pdo y lo vi en algún lugar $ stmt-> close() y pensé que significaba cerrar la declaración preparada y $ stmt = null cerraría la conexión, así que básicamente solo usas $ stmt-> close() si usas el estilo de procedimiento mysqli? (es decir, no usaría $ stmt-> close() en la declaración de ejemplo que di en mi publicación original)? en cambio, usaría $ stmt = null; para cerrar la conexión a db? gracias phplover – PHPLOVER

+2

No exactamente. $ stmt-> close() es para el estilo mysqli OOP, mysql_close o mysqli_close es el estilo de procedimiento mysql (i). Y sí, para cerrar la conexión a la base de datos en PDO, simplemente establece la declaración en NULL. – hskrijelj

+0

Gracias, ahora entiendo :) gracias phplover – PHPLOVER

9

No hay método close() para PDO; en su lugar, para cerrar una conexión, acaba de establecer la variable de base de datos en nulo, lo que cerrará la conexión.

$stmt = null; 

Para responder a su segunda pregunta, solo necesita cerrar la conexión una vez. Después de haber ejecutado todas las consultas que necesita hacer en la base de datos.

+0

Gracias, confundido, bien explicado, gracias phplover – PHPLOVER

Cuestiones relacionadas