W3docs

Creare un Database MySQL con PHP

Guida alla creazione di un database MySQL con PHP: connessione al server, istruzione CREATE DATABASE e creazione di una tabella.

Un database è il contenitore con nome che ospita le tue tabelle, e ogni tabella contiene i dati dell'applicazione in righe e colonne. Prima di poter memorizzare utenti, ordini o post di un blog, quel contenitore deve esistere sul server MySQL. Questo capitolo illustra l'intera sequenza in PHP: connettersi al server, eseguire un'istruzione CREATE DATABASE, quindi aggiungere una tabella al suo interno.

Dovresti già avere PHP e un server MySQL (o MariaDB) installato e in esecuzione. Se il passaggio di connessione fallisce, consulta PHP Connect to MySQL e PHP MySQLi per i dettagli di configurazione.

Due modi per comunicare con MySQL

PHP include due estensioni moderne per MySQL: MySQLi e PDO. Entrambe sono sicure e supportate; questo capitolo usa MySQLi perché è specifica per MySQL e risulta semplice da leggere, ma lo stesso SQL CREATE DATABASE funziona anche tramite PDO. Usa PDO quando potresti dover cambiare motore di database in futuro, e preferisci le prepared statement ogni volta che l'input dell'utente è coinvolto in una query.

Le vecchie funzioni mysql_* sono state rimosse in PHP 7 — non usarle.

Passo 1 — Connettersi al server MySQL

Per creare un database ti connetti al server, non a un database specifico (che ancora non esiste). Fornisci host, nome utente e password, ma nessun nome di database:

<?php
$servername = "localhost";
$username   = "root";
$password   = "";

// Create connection (no database name — we're about to create one)
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

new mysqli(...) restituisce un oggetto di connessione. Se qualcosa va storto, $conn->connect_error contiene il messaggio e die() interrompe lo script con quel messaggio. Il nome utente e la password sopra sono segnaposto — sostituiscili con le tue credenziali.

I tre passi seguenti sono mostrati come frammenti separati per chiarezza. In un progetto reale terresti il codice di connessione in un file separato e lo importeresti con require o include.

Passo 2 — Creare il database

Con una connessione al server aperta, esegui un'istruzione CREATE DATABASE tramite $conn->query(). Per un'istruzione che non restituisce righe (come CREATE, INSERT o UPDATE), query() restituisce TRUE in caso di successo e FALSE in caso di errore:

<?php
// SQL to create a database named myDB
$sql = "CREATE DATABASE myDB";

if ($conn->query($sql) === TRUE) {
    echo "Database created successfully";
} else {
    echo "Error creating database: " . $conn->error;
}

$conn->close();
?>

Suggerimento: usa CREATE DATABASE IF NOT EXISTS myDB per evitare un errore se il database esiste già — utile negli script di configurazione che possono essere eseguiti più di una volta.

Passo 3 — Creare una tabella nel database

Un database da solo è vuoto. I dati risiedono nelle tabelle, che si definiscono con CREATE TABLE — un nome di tabella seguito dalle colonne e dai loro tipi di dati. Questa volta ti connetti con il nome del database (il quarto argomento) in modo che la nuova tabella venga creata nel posto giusto:

<?php
$servername = "localhost";
$username   = "root";
$password   = "";
$dbname     = "myDB";

// Connect, this time selecting the myDB database
$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// SQL to create a table
$sql = "CREATE TABLE MyGuests (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname  VARCHAR(30) NOT NULL,
    email     VARCHAR(50),
    reg_date  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if ($conn->query($sql) === TRUE) {
    echo "Table MyGuests created successfully";
} else {
    echo "Error creating table: " . $conn->error;
}

$conn->close();
?>

Il significato delle definizioni delle colonne:

  • id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY — un numero intero univoco generato automaticamente per ogni riga. UNSIGNED significa senza valori negativi; PRIMARY KEY lo rende l'identificatore della riga.
  • VARCHAR(30) — testo a lunghezza variabile fino a 30 caratteri.
  • NOT NULL — la colonna deve avere sempre un valore.
  • reg_date TIMESTAMP — impostato all'ora corrente all'inserimento e aggiornato ad ogni modifica.

Nota: la vecchia sintassi della larghezza di visualizzazione INT(6) è deprecata da MySQL 8.0.17 e non ha mai influenzato lo storage o l'intervallo, quindi si preferisce INT semplice.

Errori comuni e come risolverli

  • "Access denied for user" — nome utente o password errati, o l'utente non ha il privilegio CREATE. Verifica le credenziali e i permessi.
  • "Can't create database 'myDB'; database exists" — esiste già. Eliminalo prima, oppure usa CREATE DATABASE IF NOT EXISTS.
  • $conn->error è vuoto ma la query è fallita — assicurati di aver confrontato con === TRUE; un CREATE riuscito restituisce il boolean true, non un result set.

Dove andare dopo

Una volta che il database e le tabelle esistono, i passi successivi sono inserire dati e recuperarli:

Conclusione

Creare un database MySQL in PHP si riduce a tre operazioni: aprire una connessione al server, eseguire CREATE DATABASE, quindi connettersi a quel database ed eseguire CREATE TABLE. Verificare $conn->connect_error e il valore restituito da query() ad ogni passo trasforma i fallimenti silenziosi in messaggi chiari — l'abitudine che rende affidabile il resto del tuo data layer.

Pratica

Pratica
Qual è la sintassi corretta per creare un database in PHP usando MySQLi?
Qual è la sintassi corretta per creare un database in PHP usando MySQLi?
Was this page helpful?