Duda en cerrar conexión con MySQLi en consultas SELECT

  • Autor Autor Programarte
  • Fecha de inicio Fecha de inicio
Programarte

Programarte

Épsilon
Programador
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Hola que tal.

Pues la consulta es para los grandes conocedores de bases de datos y MySQLi, tengo una duda ya que cuando tengo un código como este en PHP:

PHP:
$s=$obj->query("SELECT * FROM usuarios");

// líneas donde ocupar la información

$s->close();

Funciona perfecto o sea la última línea no da error pero eso solo pasa si el query es un SELECT, o sea en algo como esto:

PHP:
$s=$obj->query("UPDATE usuarios SET edad=1 WHERE id=3");
$s->close();

Marca error (la consulta está perfectamente bien), la lógica indica que si es un SELECT al cerrar la conexión libera los recursos obtenidos por la consulta y por eso no marca error pero si es un UPDATE, INSERT o demás al no haber datos marca error o no se porque ya le busque pero no encuentro una explicación sólida al respecto.

Si alguien tiene un conocimiento solido al respecto le agradezco de antemano el compartirlo.
 
El error ocurre justamente por que, como vos lo mencionaste, lo que se cierra es la conexión, no la query.

Ahí lo que estás cerrando es la query, no la conexión :encouragement: .

PHP: mysqli::close - Manual
 
La conexión es donde seleccionas el usuario, contraseña, y base de datos, esa es la que debes cerrar, usted esta cerrando la query.
Supongo que esto es a lo que te refieres.
ejemplo:
PHP:
$conexion = mysqli_connect("localhost","usuario","contraseña","my db");

$s=$obj->query("SELECT * FROM usuarios");

mysqli_close($conexion);
 
El error ocurre justamente por que, como vos lo mencionaste, lo que se cierra es la conexión, no la query.

Ahí lo que estás cerrando es la query, no la conexión :encouragement: .

PHP: mysqli::close - Manual

La conexión es donde seleccionas el usuario, contraseña, y base de datos, esa es la que debes cerrar, usted esta cerrando la query.
Supongo que esto es a lo que te refieres.
ejemplo:
PHP:
$conexion = mysqli_connect("localhost","usuario","contraseña","my db");

$s=$obj->query("SELECT * FROM usuarios");

mysqli_close($conexion);

Gracias por sus respuestas. En realidad el asunto es que donde fui viendo como armar la programación cuando utilizas MySQLi la conexión se cierra hasta el final del script sin embargo durante el script se pueden hacer múltiples querys y cada uno de ellos se va cerrando, sobre todo al trabajar con las sentencias preparadas que incluso si no la cierras no puedes abrir una nueva. Lo que ambos me indican de cerrar la conexión lo tengo hasta el final del script pero durante todo el script se hacen unos 20 querys de distintos tipos (SELECT, INSERT, UPDATE) y pasa lo que menciono al principio.
 
PHP:
$conexion = mysqli_connect("localhost","usuario","contraseña","my db");

$s=$obj->query("SELECT * FROM usuarios");

mysqli_close($conexion);

No probaste con free() para liberar de memoria los datos de la consulta?


PHP:
$conexion = mysqli_connect("localhost","usuario","contraseña","my db");

$s=$obj->query("SELECT * FROM usuarios");

$s->free();

mysqli_close($conexion);
 
Atrás
Arriba