Esercitazione PHP

PHP HOME Introduzione a PHP Installazione PHP Sintassi PHP Commenti PHP Variabili PHP PHP Eco/Stampa Tipi di dati PHP Stringhe PHP Numeri PHP PHP matematica Costanti PHP Operatori PHP PHP Se...Altro...Altro Passaggio PHP Ciclo PHP Funzioni PHP Matrici PHP Superglobali PHP RegEx PHP

Moduli PHP

Gestione dei moduli PHP Convalida del modulo PHP Modulo PHP richiesto URL/e-mail del modulo PHP Modulo PHP completo

PHP avanzato

Data e ora PHP PHP Include Gestione dei file PHP Apri/Leggi file PHP Creazione/scrittura di file PHP Caricamento file PHP Cookie PHP Sessioni PHP Filtri PHP Filtri PHP avanzati Funzioni di callback PHP PHP JSON Eccezioni PHP

PHP OOP

PHP Che cos'è OOP Classi/Oggetti PHP Costruttore PHP PHP distruttore Modificatori di accesso PHP Ereditarietà PHP Costanti PHP Classi astratte PHP Interfacce PHP Tratti PHP Metodi statici PHP Proprietà statiche PHP Spazi dei nomi PHP Iterabili PHP

Database MySQL

Database MySQL MySQL Connect MySQL Crea DB MySQL Crea tabella Dati di inserimento MySQL MySQL Ottieni l'ultimo ID MySQL inserisce più MySQL preparato MySQL Seleziona dati MySQL dove MySQL Ordina per MySQL Elimina dati Dati di aggiornamento MySQL Dati limite MySQL

PHP XML

Parser XML PHP Analizzatore PHP SimpleXML PHP SimpleXML - Ottieni PHP XML espatriato PHP XML DOM

PHP - AJAX

Introduzione all'Ajax AJAX PHP Database AJAX XML AJAX Ricerca in tempo reale AJAX Sondaggio AJAX

Esempi PHP

Esempi PHP compilatore PHP Quiz PHP Esercizi PHP Certificato PHP

Riferimento PHP

Panoramica di PHP matrice PHP Calendario PHP Data PHP Directory PHP Errore PHP Eccezione PHP File system PHP Filtro PHP PHP FTP PHP JSON Parole chiave PHP PHP Libxml Posta PHP PHP matematica PHP Varie PHP MySQLi Rete PHP Controllo dell'output PHP RegEx PHP PHP SimpleXML Flusso PHP Stringa PHP Gestione delle variabili PHP Analizzatore XML PHP Zip PHP Fuso orario PHP

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;