2010-08-16 9 views
5

Solo una breve domanda qui:è possibile una connessione MySQLi essere riaperto senza un'istanza di un nuovo oggetto

Se scelgo lo stile orientato agli oggetti di interagire con il mio database, vale a dire ...

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

E poi uso $mysqli->close(); per chiudere la connessione ad un certo punto ...

Posso riaprire quella connessione semplicemente iniziando un'altra query $mysqli->query();, o devo istanziare un nuovo obje MYSQLI ct?

+0

@YourCommonSense - Perché le risposte antiche qui non sono sufficienti? –

+0

@RickJames ce n'è uno abbastanza recente :) –

risposta

6

No, è necessario creare un'istanza di un nuovo oggetto MYSQLI. È possibile utilizzare la stessa variabile $mysqli però, ma si deve scrivere di nuovo questo codice:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 
3

Si potrebbe semplicemente non chiudere la connessione mysqli e riutilizzarlo.

+1

Non solo "potrebbe", ma "dovrebbe". –

+0

Quando si è in attesa di dati, da un'integrazione, ad esempio, è un buon motivo per chiudere la connessione e riaprire una volta ricevuti i dati. In questo modo si evita "Troppe connessioni". –

4

Anche se non è presente nella documentazione, mysqli::connect() è un metodo e puoi utilizzarlo per "riconnettere" l'oggetto: sembra essere solo un alias per il costruttore.

<?php 
$host = '127.0.0.1'; 
$user = 'user'; 
$pass = 'pass'; 
$name = 'storage'; 

$mysqli = new mysqli($host, $user, $pass, $name); 
// Do stuff... 
$mysqli->close(); 
// Later on... 
$mysqli->connect($host, $user, $pass, $name); 
+0

Sospetto che l'1% dello sforzo sia nel "nuovo" e il 99% dello sforzo sia nella "connessione". –

Problemi correlati