GNU/Linux >> Linux Esercitazione >  >> Linux

3 metodi per connettersi a MySQL da PHP usando il codice di esempio

Per ottenere il massimo dal tuo database MySQL, è importante capire come connetterti dal tuo programma PHP personalizzato al database MySQL.

Questo tutorial spiega i seguenti tre metodi insieme al programma PHP di esempio appropriato, che spiegherà come connettersi dal tuo PHP al database MySQL.

  • Connettiti usando l'estensione mysqli (consigliata)
  • Connetti utilizzando PDO (consigliato)
  • Connettiti utilizzando le tradizionali funzioni mysql_ legacy (obsolete)

Per questo, dovresti installare il pacchetto php-mysql.

Sulla distribuzione basata su RedHat incluso CentOS, usa yum per installare php-mysql come mostrato di seguito.

yum install php-mysql

A seconda del tuo sistema, quanto sopra installerà o aggiornerà le seguenti dipendenze:
php
php-cli
php-common
php-pdo
php-pgsql

Una volta installato, la pagina phpinfo visualizzerà il modulo mysql come mostrato di seguito:

Per tutti gli esempi seguenti, ci collegheremo a un database MySQL già esistente. Se non conosci MySQL, questo è un buon punto di partenza:MySQL Beginners Guide

Nota:tutto ciò che viene spiegato qui funzionerà anche con MariaDB, poiché è uguale a MySQL.

1. Connettiti da PHP usando l'estensione mysqli

mysqli sta per MySQL migliorato.

Tieni presente che sulla maggior parte delle distribuzioni (ad esempio:CentOS), php-mysqli fa già parte del pacchetto php-mysql. Quindi, non devi cercare e cercare il pacchetto php-mysqli. Tutto quello che devi fare è installare il pacchetto php-mysql per far funzionare l'estensione mysqli sul tuo sistema.

Crea il seguente file mysqli.php sotto Apache DocumentRoot:

<?php
  $conn = new mysqli("localhost", "root", "mySecretDBpass", "thegeekstuff");
  
  if ($conn->connect_error) {
    die("ERROR: Unable to connect: " . $conn->connect_error);
  } 

  echo 'Connected to the database.<br>';

  $result = $conn->query("SELECT name FROM employee");

  echo "Number of rows: $result->num_rows";

  $result->close();

  $conn->close();
?>

In quanto sopra:

  • mysqli – Questa funzione avvierà una nuova connessione utilizzando l'estensione mysqli. Questa funzione prenderà questi quattro argomenti
    1. nome host su cui è in esecuzione il database MySQL
    2. Nome utente MySQL per la connessione
    3. Password per l'utente mysql
    4. Database MySQL da connettere.
  • funzione di query:utilizzare questa funzione per specificare la query MySQL. In questo esempio, selezioniamo la colonna del nome dal database dei dipendenti.
  • Infine, stiamo visualizzando il numero di righe selezionate utilizzando la variabile num_rows nel risultato. Stiamo anche chiudendo sia il risultato che la variabile di connessione come mostrato sopra.

Quando chiami mysqli.php sopra dal tuo browser, vedrai il seguente output, che indica che PHP è stato in grado di connettersi al database MySQL e recuperare i dati.

Connected to the database.
Number of rows: 6

Nota:se stai tentando di connetterti a un database MySQL remoto, potresti doverlo fare per evitare il messaggio di errore dell'host non consentito:Come consentire al client MySQL di connettersi al server MySQL remoto

2. Connetti dall'estensione PHP MySQL PDO

PDO sta per PHP Data Objects.

L'unità PDO_MYSQL implementa l'interfaccia PDO fornita da PHP per la connessione dal tuo programma PHP al database MySQL.

Sulla maggior parte delle distribuzioni Linux (ad esempio:CentOS e RedHat), il pacchetto php-pdo fa già parte del pacchetto php-mysql. Quindi, non devi cercare e cercare il pacchetto php-pdo. Tutto quello che devi fare è installare il pacchetto php-mysql per far funzionare l'estensione PHP PDO_MYSQL sul tuo sistema.

Crea il seguente file mysql-pdo.php in Apache DocumentRoot:

<?php
  try {
    $conn = new PDO("mysql:host=localhost;dbname=thegeekstuff", "root", "mySecretDBpass");

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'Connected to the database.<br>';

    $sql = 'SELECT name FROM employee';
    
    print "Employee Name:<br>";
    foreach ($conn->query($sql) as $row) {
        print $row['name'] . "<br>";
    }
    $conn = null;

  }
  catch(PDOException $err) {
    echo "ERROR: Unable to connect: " . $err->getMessage();
  }
?>

In quanto sopra:

  • nuovo PDO – Questo creerà un nuovo oggetto PDO che prenderà i seguenti tre argomenti:
    1. stringa di connessione mysql:questa sarà nel formato di "mysql:host=$nomehost;dbname=$dbname". Nell'esempio sopra, il db è in esecuzione su localhost e ci stiamo connettendo al database di geekstuff.
    2. Nome utente MySQL per la connessione
    3. Password per l'utente mysql
  • Variabile $sql:crea la query sql che desideri eseguire. In questo esempio, selezioniamo la colonna del nome dalla tabella dei dipendenti.
  • query($sql) – Qui stiamo eseguendo la query sql che abbiamo appena creato.
  • foreach – Qui, stiamo scorrendo l'output del comando query precedente e lo memorizziamo nella variabile $row, quindi lo stiamo visualizzando usando il comando print.
  • In MySQL PDO, per chiudere la connessione, imposta semplicemente la variabile $conn su un valore nullo.

Quando chiami mysqli.php sopra dal tuo browser, vedrai il seguente output, che indica che PHP è stato in grado di connettersi al database MySQL e recuperare i dati.

Connected to the database.
Employee Name:
Thomas
Jason
Mayla
Nisha
Randy
Ritu

3. Connettiti da PHP usando le funzioni mysql_ legacy (obsolete)

Usa questo metodo solo se stai utilizzando una versione precedente di PHP e per qualche motivo non puoi aggiornarla alla nuova versione.

Si consiglia di utilizzare il metodo n. 2 e il metodo n. 3 illustrati sopra anziché questo metodo. Ho incluso questo metodo solo come riferimento e non come consiglio da utilizzare.

Questa particolare estensione è stata deprecata a partire dalla versione PHP 5.5. Ma a partire dalla versione PHP 7.0, questo non funzionerà nemmeno, poiché è stato rimosso.

A partire dalla versione PHP 5.5, quando si utilizzano queste funzioni, verrà generato un errore E_DEPRECATED.

Crea il seguente file mysql-legacy.php sotto Apache DocumentRoot:

<?php
$conn = mysql_connect('localhost', 'root', 'mySecretDBpass');
mysql_select_db("thegeekstuff");
if (!$conn) {
die('ERROR: Unable to connect: ' . mysql_error());
}

echo 'Connected to the database.<br>';

$result = mysql_query('SELECT name FROM employee');

$row = mysql_fetch_row($result);
echo "Employee 1: ", $row[0], "<br>\n";

mysql_close($conn);
?>

In quanto sopra:

    La funzione
  • mysql_connect accetta tre argomenti:1) nome host su cui è in esecuzione il database MySQL 2) nome utente MySQL per la connessione 3) Password per l'utente mysql. Qui si sta connettendo al database MySQL in esecuzione sul server locale utilizzando il nome utente root e la relativa password.
  • funzione mysql_select_db – Come suggerisce il nome, questo selezionerà il database a cui vuoi connetterti. Questo è equivalente al comando "usa". In questo esempio, ci stiamo connettendo al database thegeekstuff.
  • funzione mysql_query – Usala per specificare la tua query MySQL. In questo esempio, selezioniamo la colonna del nome dal database dei dipendenti.
  • mysql_fetch_row – Usa questa funzione per recuperare le righe dalla query SQL che abbiamo appena creato.
  • Finalmente chiudi la connessione usando il comando mysql_close come mostrato sopra.

Quando chiami mysql-legacy.php sopra dal tuo browser, vedrai il seguente output, che indica che PHP è stato in grado di connettersi al database MySQL e recuperare i dati.

Connected to the database.
Employee 1: Thomas

Linux
  1. Connettiti a un database MySQL da remoto

  2. Connettiti a Linux da Mac OS X usando Terminal

  3. Connettiti a Linux da Windows usando PuTTY

  4. Come eseguire lo sniffing dei pacchetti utilizzando Libpcap con codice di esempio C

  5. Come risolvere il problema del protocollo SSL TLS Curl da CLI e codice PHP

Come connettersi a MySQL usando PHP

Come connettersi a MySQL dalla riga di comando di Windows

Come inserire dati nel database MySQL utilizzando PHP in XAMPP

Crea database e tabelle MySQL usando PHP in XAMPP

Come distribuire un'applicazione PHP con Nginx e MySQL utilizzando Docker e Docker Compose

Come connettersi a MySQL usando PHP