Recuperare informazioni con PHP mysqli_query da un database MySQL/MariaDB
Con PHP è possibile recuperare facilmente informazioni da un database MySQL o MariaDB. A tal fine, si stabilisce una connessione al database e successivamente si esegue una query SQL con PHP mysqli_query(), i cui risultati possono essere ulteriormente elaborati.
- Partner IONOS Cloud
- Soluzioni flessibili e su misura
- Data center situati in Europa
Requisiti
Per recuperare informazioni da un database MySQL o MariaDB con PHP, è necessario soddisfare alcuni requisiti di base. Innanzitutto, si necessita di un ambiente PHP funzionante sul server, spesso in combinazione con un server web come Apache o Nginx. Se non si dispone ancora di un ambiente, è necessario installare PHP. Inoltre, deve essere installato MySQL o MariaDB. Sul lato PHP, è necessaria anche l’estensione MySQLi, che tuttavia è inclusa nella maggior parte delle installazioni standard.
Recuperare informazioni da MySQL/MariaDB con PHP
In questo tutorial ti mostreremo come creare un semplice database MySQL/MariaDB con tabella e utente, e successivamente accedervi tramite PHP. Passo dopo passo realizzeremo un piccolo sito web di esempio che interroga le recensioni di ristoranti memorizzate direttamente dal database e le visualizza in una tabella HTML.
Primo passaggio: creare il database
Nel primo passaggio è necessario creare il database. A tal fine, accedi al client MySQL/MariaDB dalla riga di comando:
mysql -u root -pCrea un database per le recensioni:
CREATE DATABASE reviews;Passa a questo database:
USE reviews;Per questo esempio, creeremo solo una tabella. Questa avrà tre campi:
- Campo ID: l’ID è la chiave della tabella e sarà impostato su auto-incremento.
- Nome di chi valuta: un campo di testo con una lunghezza fino a 100 caratteri.
- Valutazione stelle: una valutazione numerica da 1 a 5 TINYINT
- Controlla i dettagli: un campo di testo con un limite di circa 500 parole. VARCHAR(4000)
Crea la tabella con il comando CREATE TABLE:
CREATE TABLE user_review (
id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
reviewer_name VARCHAR(100),
star_rating TINYINT,
details VARCHAR(4000)
);Ora aggiungiamo due recensioni di esempio alla tabella:
INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Alessandro', '5', 'La pizza è fantastica!');
INSERT INTO user_review (reviewer_name, star_rating, details) VALUES ('Enrico', '1', 'La pizza non sa di niente.');Secondo passaggio: creare un utente del database
Nel passaggio successivo, crea un utente per il database. Per motivi di sicurezza, è sempre consigliabile creare un utente univoco per ogni database, soprattutto se si accede al database da un sito web.
Il seguente comando crea un utente chiamato review_site con la password JxSLRkdutW e gli concede l’accesso al database appena creato:
CREATE USER 'review_site'@'localhost' IDENTIFIED BY 'JxSLRkdutW';
GRANT SELECT ON reviews.* TO 'review_site'@'localhost';Terzo passaggio: creare uno script PHP
Il codice in questo tutorial è semplificato per mostrare esempi. Quando crei un sito web, ti consigliamo vivamente di seguire le pratiche di sicurezza comuni per garantire che i tuoi script PHP non limitino l’accesso al server.
Crea un file showreviews.php nel tuo spazio web e aprilo per modificarlo. Ad esempio, per creare il file nella directory /var/www/html, il comando con l’editor nano è:
sudo nano /var/www/html/showreviews.phpNel nostro esempio, il PHP sarà incorporato in HTML, quindi la pagina inizierà con le dichiarazioni HTML di base. Anche lo stile CSS si trova nell’intestazione HTML:
<!doctype html>
<html>
<head>
<meta-charset="utf-8">
<style>
table {
border-collapse: collapse;
margin: 20px auto;
width: 80%;
}
th, td {
border: 1px solid black;
padding: 5px 10px;
text-align: left;
}
</style>
</head>
<body>HTMLOgni script PHP deve iniziare con il tag di apertura PHP:
<?phpHTMLSuccessivamente, aggiungi un blocco di connessione MySQL/MariaDB con la posizione del server (localhost), il nome del database, nonché il nome utente e la password del database.
$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";HTMLSuccessivamente, aggiungiamo una sezione per stabilire una connessione al database. Se la connessione fallisce, verrà visualizzato un messaggio di errore. Puoi stabilire una connessione tra il tuo script PHP e il tuo database in MySQL e MariaDB utilizzando mysqli_connect(). Questo comando accetta come parametri il nome host, il nome utente, la password e il nome del database, in modo che PHP sappia esattamente con quale database deve lavorare.
$dbconnect=mysqli_connect($hostname,$username,$password,$db);
if (!$dbconnect) {
die("Database connection failed: " . mysqli_connect_error());
}
?>HTMLQuarto passaggio: inserire una tabella
Nel prossimo passaggio, aggiungi nel tuo script il codice HTML per iniziare la tabella che useremo per visualizzare i dati:
<table>
<tr>
<td>Nome del recensore</td>
<td>Valutazione</td>
<td>Dettagli</td>
</tr>HTMLSuccessivamente, segue il codice PHP che interroga il database, scorre i risultati e visualizza ogni recensione in una propria riga della tabella:
<?php
$query = mysqli_query($dbconnect, "SELECT * FROM user_review")
or die (mysqli_error($dbconnect));
while ($row = mysqli_fetch_array($query)) {
echo
"<tr>
<td>{$row['reviewer_name']}</td>
<td>{$row['star_rating']}</td>
<td>{$row['details']}</td>
</tr>\n
Ricorda di chiudere la tabella e il blocco HTML alla fine del documento:
```HTML
</table>
</body>
</html>HTMLPer testare lo script, visita showreviews.php in un browser.

Quinto passaggio: lo script completo
Lo script PHP completo è il seguente:
<!doctype html>
<html>
<head>
<meta-charset="utf-8">
<style>
table {
border-collapse: collapse;
margin: 20px auto;
width: 80%;
}
th, td {
border: 1px solid black;
padding: 5px 10px;
text-align: left;
}
</style>
</head>
<body>
<?php
$hostname = "localhost";
$username = "review_site";
$password = "JxSLRkdutW";
$db = "reviews";
$dbconnect=mysqli_connect($hostname,$username,$password,$db);
if (!$dbconnect) {
die("Database connection failed: " . mysqli_connect_error());
}
?>
<table>
<tr>
<td>Nome del recensore</td>
<td>Valutazione</td>
<td>Dettagli</td>
</tr>
<?php
$query = mysqli_query($dbconnect, "SELECT * FROM user_review")
or die (mysqli_error($dbconnect));
while ($row = mysqli_fetch_array($query)) {
echo
"<tr>
<td>{$row['reviewer_name']}</td>
<td>{$row['star_rating']}</td>
<td>{$row['details']}</td>
</tr>\n";
}
?>
</table>
</body>
</html>HTML
