PHP

Collegarsi a un database con mysqli

by Andrea Spera

Connessione a un DB
In questa pagina viene mostrato un esempio di codice PHP che gestisce la connessione a un database utilizzando una classe orientata agli oggetti. La classe Database implementa il pattern Singleton (*) per garantire una singola connessione attiva, e fornisce metodi per inizializzare la connessione, verificare lo stato con un controllo (check()), inviare un ping al server (ping()), e chiudere la connessione in modo sicuro (close()).
(*) Un Singleton รจ un design pattern in programmazione orientata agli oggetti che garantisce che una classe abbia una sola istanza in tutta l'applicazione e fornisce un punto globale di accesso a tale istanza. In pratica, il pattern Singleton assicura che, ogni volta che viene richiesto l'oggetto della classe, si ottiene sempre la stessa istanza.
Codice
<?php
class Database
	{
	private static $init = FALSE;
	private static $host = "host";// editare
	private static $username = "username";// editare
	private static $password = "password";// editare
	private static $nome_database = "nome_database";// editare
	public static $conn;
	public function initialize()
		{
		if(self::$init===TRUE)
			{
			return;
			}
		self::$init = TRUE;
		self::$conn = new mysqli(self::$host, self::$username, self::$password, self::$nome_database);
		}
	public function check()
		{
		if(mysqli_connect_error())
			{
			echo "Check connection: error (" . mysqli_connect_errno() . ", " . mysqli_connect_error() . ")<br>";
			}
			else
				{
				echo "Check connection: ok<br> Host info: " . self::$conn->host_info . ")<br>";
				}
		}
	public function ping()
		{
		if(self::$conn->ping())
			{
			echo "Ping: ok<br>";
			}
			else
				{
				echo "Ping: no response<br>";
				}
		}
	public function close()
		{
		if(!self::$conn->close())
			{
			echo "Error while closing the connection<br>";
			}
		}
	};
Database::initialize();
Database::check();
Database::ping();
Database::close();
?>
Esempio di output
Check connection: [...]
Host info: [...]
Ping: ok