PHP Connetti a MySQL
PHP 5 e versioni successive possono funzionare con un database MySQL utilizzando:
- Estensione MySQLi (la "i" sta per migliorato)
- PDO (oggetti dati PHP)
Le versioni precedenti di PHP utilizzavano l'estensione MySQL. Tuttavia, questa estensione è stata ritirata nel 2012.
Dovrei usare MySQLi o PDO?
Se hai bisogno di una risposta breve, sarebbe "Qualunque cosa ti piaccia".
Sia MySQLi che PDO hanno i loro vantaggi:
PDO funzionerà su 12 diversi sistemi di database, mentre MySQLi funzionerà solo con database MySQL.
Quindi, se devi cambiare il tuo progetto per utilizzare un altro database, PDO semplifica il processo. Devi solo modificare la stringa di connessione e alcune query. Con MySQLi, dovrai riscrivere l'intero codice, query incluse.
Entrambi sono orientati agli oggetti, ma MySQLi offre anche un'API procedurale.
Entrambi supportano le dichiarazioni preparate. Le istruzioni preparate proteggono dall'iniezione SQL e sono molto importanti per la sicurezza delle applicazioni Web.
Esempi di MySQL nella sintassi MySQLi e PDO
In questo e nei capitoli seguenti mostriamo tre modi di lavorare con PHP e MySQL:
- MySQLi (orientato agli oggetti)
- MySQLi (procedurale)
- DOP
Installazione MySQLi
Per Linux e Windows: l'estensione MySQLi viene installata automaticamente nella maggior parte dei casi, quando viene installato il pacchetto php5 mysql.
Per i dettagli sull'installazione, visitare: http://php.net/manual/en/mysqli.installation.php
Installazione DOP
Per i dettagli sull'installazione, visitare: http://php.net/manual/en/pdo.installation.php
Apri una connessione a MySQL
Prima di poter accedere ai dati nel database MySQL, dobbiamo essere in grado di connetterci al server:
Esempio (orientato agli oggetti MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Nota sull'esempio orientato agli oggetti sopra:
$connect_error è stato interrotto fino a PHP 5.2.9 e 5.3.0. Se è necessario garantire la compatibilità con le versioni di PHP precedenti alla 5.2.9 e alla 5.3.0, utilizzare invece il codice seguente:
// Verificare la connessione
if (mysqli_connect_error()) {
die("Connessione al database non riuscita: " . mysqli_connect_error());
}
Esempio (procedurale MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Esempio (DOP)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Nota: nell'esempio PDO sopra abbiamo anche specificato un database (myDB) . PDO richiede un database valido a cui connettersi. Se non viene specificato alcun database, viene generata un'eccezione.
Suggerimento: un grande vantaggio di PDO è che ha una classe di eccezione per gestire eventuali problemi che possono verificarsi nelle nostre query di database. Se viene generata un'eccezione all'interno del blocco try{ }, lo script interrompe l'esecuzione e scorre direttamente al primo blocco catch(){ }.
Chiudere la connessione
La connessione verrà chiusa automaticamente al termine dello script. Per chiudere la connessione prima, utilizzare quanto segue:
MySQLi orientato agli oggetti:
$conn->close();
MySQLi procedurale:
mysqli_close($conn);
DOP:
$conn = null;