Mysql
 sql >> Database >  >> RDS >> Mysql

Come collegare PHP a MySQL

Vuoi imparare a connettere PHP a MySQL ed eseguire diversi tipi di operazioni sui database? In questo articolo faremo proprio questo:discuteremo della connettività del database MySQL in PHP.

PHP fornisce diversi modi per connettere PHP a un server di database MySQL. Fino a PHP 5.5, uno dei modi più popolari era con l'estensione MySQL:forniva un modo "procedurale" per connettersi al server MySQL. Tuttavia, questa estensione è obsoleta a partire da PHP 5.5, quindi non ne discuteremo.

Attualmente, le tue due scelte sono PDO e MySQLi.

L'estensione PDO (PHP Data Objects) supporta diversi tipi di server di database sottostanti insieme al server MySQL. E quindi, è portatile nel caso in cui tu decida di scambiare il server di database sottostante in qualsiasi momento in futuro.

D'altra parte, l'estensione MySQLi è specifica per il server MySQL e offre velocità e prestazioni migliori. L'estensione MySQLi potrebbe anche essere un po' più semplice da capire all'inizio, poiché ti consente di scrivere direttamente query SQL. Se hai già lavorato con database SQL, questo sarà molto familiare. L'estensione PDO, tuttavia, crea una potente mappatura dal database SQL al codice PHP e ti consente di eseguire molte operazioni sul database senza dover conoscere i dettagli di SQL o del database. A lungo termine e per progetti più grandi, questo può far risparmiare molto sforzo di codifica e debugging.

In questo post, userò l'estensione MySQLi. Ma puoi saperne di più sull'estensione PDO qui su Envato Tuts+.

  • PHPCostruisci rapidamente un'interfaccia CRUD PHP con PDO Advanced CRUD Generator ToolSajal Soni

Tratteremo i seguenti argomenti in questo articolo:

  • creazione di una connessione MySQL
  • inserimento, aggiornamento ed eliminazione di record
  • recupero dei record

I migliori script di database PHP su CodeCanyon

In questo post, ti mostrerò come creare una connessione bare metal a un database MySQL da PHP. Questa è un'abilità importante da avere, ma se vuoi risparmiare tempo sul tuo prossimo progetto, potresti voler eseguire l'aggiornamento a uno script di database professionale. Ciò farà risparmiare tempo e semplificherà il tuo lavoro.

Esplora gli script di database PHP migliori e più utili mai creati su CodeCanyon. Con un pagamento una tantum a basso costo, puoi acquistare questi temi WordPress di alta qualità e migliorare l'esperienza del tuo sito Web per te e i tuoi visitatori.

Ecco alcuni dei migliori script di database PHP disponibili su CodeCanyon per il 2020.

  • PHPConfronto tra livelli di astrazione database PHP e plugin CRUD Sajal Soni

Crea una connessione MySQL

In questa sezione, ti mostrerò come puoi connetterti al server MySQL dal tuo script PHP e creare un oggetto di connessione. Successivamente, questo oggetto di connessione verrà utilizzato per eseguire query, recuperare l'output e manipolare i record del database. Come discusso in precedenza, utilizzeremo l'estensione PHP MySQLi per questo articolo.

L'estensione MySQLi fornisce due modi diversi per eseguire operazioni di database. Puoi usarlo sia nel modo orientato agli oggetti che nel modo procedurale, ma poiché questo tutorial è rivolto ai principianti, mi atterrò al modo procedurale. Se sei interessato a vedere alcuni snippet orientati agli oggetti, puoi inviarmi un ping nella sezione commenti qui sotto e sarò felice di fornirli.

Per iniziare, vai avanti e crea il db_connect.php file nella radice del documento con i seguenti contenuti.

<?php
$mysqli_link = mysqli_connect("{HOST_NAME}", "{DATABASE_USERNAME}", "{DATABASE_PASSWORD}", "{DATABASE_NAME}");

if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

Nota che ho usato segnaposto in mysqli_connect funzione:devi sostituirli con i valori effettivi.

Esaminiamo ogni segnaposto per vedere cosa rappresenta.

  • {HOST_NAME} :Rappresenta il nome host o l'indirizzo IP del tuo server MySQL. Se hai installato il server MySQL sullo stesso sistema insieme a PHP, dovresti usare localhost o 127.0.0.1 . D'altra parte, se stai utilizzando un server MySQL ospitato esternamente, puoi utilizzare il nome host o l'indirizzo IP corrispondente.
  • {DATABASE_USERNAME} :Rappresenta il nome utente del tuo utente MySQL. Fondamentalmente, questo è il nome utente che usi per connetterti al tuo server MySQL.
  • {DATABASE_PASSWORD} :Rappresenta la password del tuo utente MySQL. Ancora una volta, questa è la password che usi per connetterti al tuo server MySQL insieme al nome utente MySQL.
  • {DATABASE_NAME} :Questo è il nome del database MySQL a cui vuoi connetterti. Una volta creata la connessione, interrogherai questo database per ulteriori operazioni.

Vai avanti e sostituisci questi segnaposto con valori effettivi. Nel mio caso, ho installato il server MySQL in locale e ho un utente MySQL con tutsplus-demo-user come nome utente MySQL e tutsplus-demo-password come password MySQL. E con ciò, l'esempio sopra appare così:

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno()) 
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

Se esegui questo esempio, dovrebbe creare un collegamento di connessione al database e assegnarlo a $mysqli_link variabile, che utilizzeremo in seguito per eseguire diversi tipi di operazioni sul database.

D'altra parte, se c'è qualche problema nella configurazione della connessione, il  mysqli_connect_errno funzione restituirà un codice di errore e mysqli_connect_error funzione visualizzerà l'errore effettivo. Nell'esempio sopra, l'abbiamo usato per scopi di debug.

Ora abbiamo una connessione riuscita al server MySQL e dalla prossima sezione in poi vedremo come utilizzarlo per eseguire diversi tipi di query.

Come inserire i record

Nella sezione precedente, abbiamo discusso su come usare mysqli_connect funzione per impostare una connessione al database con il server MySQL. In questa sezione, andremo avanti e discuteremo come utilizzare l'oggetto connessione per eseguire INSERT domande.

Se vuoi seguire gli esempi discussi in questo articolo, dovrai creare la seguente tabella MySQL nel tuo database. È la tabella che useremo in tutti gli esempi d'ora in poi.

CREATE TABLE `students` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `last_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Vai avanti e crea la tabella MySQL sopra utilizzando il software phpMyAdmin o lo strumento da riga di comando.

Quindi, creiamo il db_insert.php file con i seguenti contenuti. Non dimenticare di sostituire i parametri di connessione con i tuoi.

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$insert_query = "INSERT INTO students(`first_name`,`last_name`,`email`)
VALUES ('". mysqli_real_escape_string($mysqli_link, 'John') ."','". mysqli_real_escape_string($mysqli_link, 'Wood') ."','". mysqli_real_escape_string($mysqli_link, '[email protected]') ."')";
 
// run the insert query
If (mysqli_query($mysqli_link, $insert_query)) {
    echo 'Record inserted successfully.';
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

Innanzitutto, impostiamo una connessione al database utilizzando mysqli_connect funzione, come abbiamo discusso in precedenza. Successivamente, abbiamo preparato la query di inserimento che eseguiremo in seguito. È importante notare che abbiamo utilizzato mysqli_real_escape_string funzione per sfuggire ai valori di stringa che utilizzeremo nella query di inserimento. In particolare, devi utilizzare questa funzione quando hai a che fare con valori inviati tramite $_POST variabili per evitare SQL injection.

Infine, abbiamo utilizzato mysqli_query funzione, che accetta due argomenti. Il primo argomento è il collegamento di connessione attivo in cui verrà eseguita la query. E il secondo argomento è la query MySQL che vogliamo eseguire. La mysqli_query la funzione restituisce TRUE se la query è stata eseguita correttamente.

Infine, abbiamo utilizzato mysqli_close funzione per chiudere la connessione al database attiva. È buona norma chiudere la connessione al database una volta terminate le operazioni sul database.

Vai avanti ed esegui lo script, e questo dovrebbe inserire un record negli students tavola!

Come aggiornare i record

L'aggiornamento dei record in un database dallo script PHP è molto simile all'operazione di inserimento; l'unica differenza è che la query sarà la query di aggiornamento anziché la query di inserimento.

Rivediamo l'esempio sopra e aggiorniamo il first_name campo, come mostrato nell'esempio seguente.

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$update_query = "UPDATE students SET `first_name` = '". mysqli_real_escape_string($mysqli_link,'Johnny') ."' WHERE `email` = '[email protected]'";
 
// run the update query
If (mysqli_query($mysqli_link, $update_query)) {
    echo 'Record updated successfully.';
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

Vai avanti ed esegui lo script, e questo dovrebbe aggiornare il record in students tavolo.

Come selezionare i record

Nelle sezioni precedenti, abbiamo discusso di come inserire e aggiornare i record in un database dallo script PHP. In questa sezione esploreremo come recuperare i record da un database utilizzando i diversi tipi di funzioni MySQLi.

Per prima cosa, devi usare mysqli_query funzione per eseguire la query di selezione. Dopo l'esecuzione corretta della query selezionata, mysqli_query La funzione restituisce l'oggetto risultato mysqli, che potremmo usare per scorrere i record restituiti dalla query select. Quando si tratta di recuperare e scorrere i record dall'oggetto risultato MySQLi, sono disponibili diverse funzioni.

  • mysqli_fetch_all :ti consente di recuperare tutte le righe dei risultati contemporaneamente. Puoi anche specificare se desideri risultati come matrice associativa, matrice numerica o entrambi.
  • mysqli_fetch_array :Ti permette di recuperare una riga alla volta. E quindi, dovrai usare il ciclo while per scorrere tutti i record. Anche in questo caso, puoi specificare se desideri una riga di risultati come matrice associativa, matrice numerica o entrambi.
  • mysqli_fetch_assoc :Recupera una riga di risultati una alla volta come array associato.
  • mysqli_fetch_object :Recupera una riga di risultati una alla volta come oggetto.

Diamo un'occhiata al seguente esempio per capire come funziona:

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$select_query = "SELECT * FROM students LIMIT 10";
$result = mysqli_query($mysqli_link, $select_query);

while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    echo "First Name:" . $row['first_name'] . "<br/>";
    echo "Last Name:" . $row['last_name'] . "<br/>";
    echo "Email:" . $row['email'] . "<br/>";
    echo "<br/>";
}

// close the db connection
mysqli_close($mysqli_link);
?>

Come puoi vedere, abbiamo usato il mysqli_fetch_array funzione con il MYSQLI_ASSOC opzione come secondo argomento. E quindi, restituisce la riga del risultato come matrice associata. Se usi il MYSQLI_NUM opzione, potresti accedervi come $row[0] , $row[1] e $row[2] nell'esempio sopra.

D'altra parte, se usi mysqli_fetch_object funzione nell'esempio sopra, puoi accedere ai valori come mostrato nel frammento di codice seguente. Per brevità, includerò solo lo snippet del ciclo while.

…
…
while ($row = mysqli_fetch_object($result)) {
    echo "First Name:" . $row->first_name . "<br/>";
    echo "Last Name:" . $row->last_name . "<br/>";
    echo "Email:" . $row->email . "<br/>";
    echo "<br/>";
}
...
...

Quindi, in questo modo, puoi recuperare e visualizzare i record dal database MySQLi.

Come eliminare i record

In questa sezione, vedremo come eseguire query di eliminazione dallo script PHP. L'eliminazione di record da un database è un'operazione piuttosto semplice poiché è sufficiente preparare la query di eliminazione ed eseguirla con mysqli_query funzione.

Esaminiamo il seguente esempio per vedere come funziona.

<?php
$mysqli_link = mysqli_connect("localhost", "tutsplus-demo-user", "tutsplus-demo-password", "tutsplus-demo-database");

if (mysqli_connect_errno())
{
    printf("MySQL connection failed with the error: %s", mysqli_connect_error());
    exit;
}

$delete_query = "DELETE FROM students WHERE `email` = '[email protected]'";
 
// run the update query
If (mysqli_query($mysqli_link, $delete_query)) {
    echo 'Record deleted successfully.';
}
 
// close the db connection
mysqli_close($mysqli_link);
?>

Come puoi vedere, tutto è lo stesso che abbiamo già visto con gli esempi di inserimento e aggiornamento, tranne per il fatto che la query è una query di eliminazione in questo caso.

Ecco come puoi eseguire diversi tipi di operazioni sul database dallo script PHP.

E con questo, abbiamo raggiunto la fine di questo tutorial. Quello che abbiamo discusso finora oggi dovrebbe aiutarti a rafforzare i concetti di connettività del database, in particolare come connettere PHP a MySQL ed eseguire diversi tipi di operazioni.