Gli ultimi tutorial di sviluppo web
 

PHP Connettersi a MySQL


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;