PHP 5 e versioni successive possono lavorare con un database MySQL utilizzando:
- Estensione MySQLi (the "i" stands for improved)
- PDO (PHP Data Objects)
Le versioni precedenti di PHP utilizzate l'estensione MySQL. Tuttavia, questa estensione è stata sconsigliata nel 2012.
Dovrei usare MySQLi o DOP?
Se avete bisogno di una risposta breve, sarebbe "Whatever you like" .
Sia MySQLi e DOP hanno i loro vantaggi:
PDO lavorerà su 12 diversi sistemi di database, dove, come MySQLi funziona solo con i database MySQL.
Quindi, se si deve passare il progetto per utilizzare un altro database, DOP rende il processo facile. Basta cambiare la stringa di connessione e un paio di domande. Con MySQLi, è necessario riscrivere l'intero codice - query inclusi.
Entrambi sono orientato agli oggetti, ma MySQLi offre anche un'API procedurale.
Entrambi supportano prepared statement. Istruzioni preparate proteggono da SQL injection, e sono molto importanti per la sicurezza delle applicazioni web.
Esempi di MySQL in entrambi MySQLi e DOP Sintassi
In questo, e nei seguenti capitoli dimostriamo tre modi di lavorare con PHP e MySQL:
- MySQLi (object-oriented)
- MySQLi (procedural)
- DOP
MySQLi Installazione
Per Linux e Windows: L'estensione MySQLi viene automaticamente installato nella maggior parte dei casi, quando viene installato il pacchetto php5 mysql.
Per i dettagli sull'installazione, vai a: http://php.net/manual/en/mysqli.installation.php
DOP installazione
Per i dettagli sull'installazione, vai a: http://php.net/manual/en/pdo.installation.php
Aprire una connessione a MySQL
Prima di poter accedere ai dati nel database MySQL, abbiamo bisogno di essere in grado di connettersi al server:
Esempio (MySQLi Object-Oriented)
<?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 di cui sopra: $ connect_error è stato rotto fino a PHP 5.2.9 e 5.3.0. Se è necessario per garantire la compatibilità con le versioni di PHP precedenti alla 5.2.9 e 5.3.0, utilizzare il seguente codice invece:
// Controllare il collegamento
se ( mysqli_connect_error() ) {
die("Database connection failed: " . mysqli_connect_error() );
}
Esempio (MySQLi Procedural)
<?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 (PDO)
<?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();
}
?>
Si noti che nell'esempio DOP sopra abbiamo anche specificato un database (myDB) . DOP richiede un database valido a cui connettersi. Se non viene specificato alcun database, viene generata un'eccezione.
Suggerimento: Un grande vantaggio di DOP è 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 si ferma l'esecuzione e scorre direttamente al primo catch() {} blocco.
Chiudere la connessione
La connessione verrà chiusa automaticamente quando lo script finisce. Per chiudere la connessione prima, utilizzare il seguente:
Esempio (MySQLi Object-Oriented)
$conn->close();
Esempio (MySQLi Procedural)
mysqli_close($conn);
Esempio (PDO)
$conn = null;