Dúvida em fechar conexão com MySQLi em consultas SELECT

  • Autor Autor Programarte
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Programarte

Programarte

Épsilon
Programador
Verificado
Verificación en dos pasos activada
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.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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);
 
Voltar
Topo