English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Inserimento dei dati MySQL PHP

In questo tutorial imparerai come usare PHP per inserire record nella tabella MySQL.

Inserire dati nella tabella del database MySQL

Ora che hai capito come creare database e tabelle in MySQL, in questo tutorial imparerai come eseguire query SQL per inserire record nella tabella.

INSERT INTOLa statement è usata per inserire una nuova riga nella tabella del database.

Usiamo una query INSERT INTO con valori appropriati per eseguire una query SQL, poi eseguiremo la query INSERT passando la funzione mysqli_query() di PHP per eseguire la query INSERT, in modo da inserire dati nella tabella. Ecco un esempio, che specificafirst_name,last_nameeemailI valori del campo vannopersonsAggiungi una nuova riga alla tabella.

Esempio: metodo procedurale

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Controlla la connessione
if ($link === false) {
    die("Errore: Impossibile connettersi. " . mysqli_connect_error());
}
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')";
if (mysqli_query($link, $sql)) {
    echo "记录插入成功。";
} else {
    echo "Errore: Impossibile eseguire $sql. " . mysqli_error($link);
}
 
//Chiusura della connessione
mysqli_close($link);
?>

Esempio: metodo orientato agli oggetti

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Verifica la connessione
if ($mysqli === false) {
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')";
if ($mysqli->query($sql) === true) {
    echo "记录插入成功。";
} else {
    echo "Errore: Impossibile eseguire $sql. " . $mysqli->error;
}
 
//Chiusura della connessione
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //将PDO错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
//尝试执行插入查询
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')";    
    $pdo->exec($sql);
    echo "记录插入成功。";
} catch(PDOException $e){
    die("错误:无法执行 $sql. " . $e->getMessage());
}
 
//Chiusura della connessione
unset($pdo);
?>

Se ti ricordiIl contenuto del capitolo precedentequindiidIl campo è marcato con il segno AUTO_INCREMENT. Questo modificadori dice a MySQL che se non viene specificato il valore, viene assegnato automaticamente un valore al campo aumentando di 1 il valore precedente.

Inserisci più righe nella tabella

Puoi anche inserire più righe in una volta tramite una singola query di inserimento. Per fare questo, includi più liste di valori di colonne nell'istruzione INSERT INTO, ognuna delle quali deve essere racchiusa tra parentesi e separata da virgole.

Facciamo un inserimentopersonsAggiungi alcune righe alla tabella, come segue:

Esempio: metodo procedurale

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Verifica la connessione
if ($link === false) {
    die("Errore: Impossibile connettersi. " . mysqli_connect_error());
}
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', '[email protected]'),
            ('Clark', 'Kent', '[email protected]'),
            ('John', 'Carter', '[email protected]'),
            ('Harry', 'Potter', '[email protected]')";
if (mysqli_query($link, $sql)) {
    echo "Record aggiunto con successo.";
} else {
    echo "Errore: Impossibile eseguire $sql. " . mysqli_error($link);
}
 
//Chiusura della connessione
mysqli_close($link);
?>

Esempio: metodo orientato agli oggetti

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Verifica la connessione
if ($mysqli === false) {
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', '[email protected]'),
            ('Clark', 'Kent', '[email protected]'),
            ('John', 'Carter', '[email protected]'),
            ('Harry', 'Potter', '[email protected]')";
if ($mysqli->query($sql) === true) {
    echo "记录插入成功。";
} else {
    echo "Errore: Impossibile eseguire $sql. " . $mysqli->error;
}
 
//Chiusura della connessione
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //将PDO错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("Errore: Impossibile connettersi. " . $e->getMessage());
}
 
//尝试执行插入查询
try{
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES
            ('John', 'Rambo', '[email protected]'),
            ('Clark', 'Kent', '[email protected]'),
            ('John', 'Carter', '[email protected]'),
            ('Harry', 'Potter', '[email protected]')";   
    $pdo->exec($sql);
    echo "记录插入成功。";
} catch(PDOException $e){
    die("错误:无法执行 $sql. " . $e->getMessage());
}
 
//Chiusura della connessione
unset($pdo);
?>

Ora, vai su phpMyAdmin (http://localhost/phpmyadmin/) e verificadimostrazionenel databasepersonaleTabella dei dati. TroveraiIDil valore della colonna è calcolato aggiungendo 1 all'ultimoIDdel valore dell'ultima riga della colonna

注意: Le istruzioni SQL possono contenere un numero qualsiasi di interruzioni di riga, ma a condizione che nessuna interruzione di riga rompa parole chiave, valori, espressioni, ecc.

Inserimento dei dati dal modulo HTML nel database

Nella sezione precedente, abbiamo imparato come inserire dati nel database da uno script PHP. Ora, vedremo come inserire dati nel database provenienti da un modulo HTML. Creiamo un modulo HTML che può essere utilizzato per inserire nuovi recordpersonaletabella.

Passaggio 1: Creazione del modulo HTML

Questo è un semplice modulo HTML che contiene tre campi di testo<input>un campo e un pulsante di invio.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Modulo di Aggiunta Record</title>
</head>
<form action="insert.php" method="post">
    <p>
        <label for="firstName">Nome:</label>
        <input type="text" name="first_name" id="firstName">
    </p>
    <p>
        <label for="lastName">Cognome:</label>
        <input type="text" name="last_name" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Indirizzo Email:</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Submit">
</form>
</html>
Testa e vedi‹/›

Passaggio 2: Recupero e inserimento dei dati del modulo

Nell'esempio sopra, quando l'utente fa clic sul pulsante di invio del modulo HTML per aggiungere un record, i dati del modulo vengono inviati al file "insert.php". Il file "insert.php" si connette al server del database MySQL, utilizza le variabili $_REQUEST di PHP per recuperare i campi del modulo e infine esegue una query di inserimento per aggiungere il record. Ecco il codice completo del nostro file "insert.php":

Esempio: metodo procedurale

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Verifica la connessione
if ($link === false) {
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
//Per sicurezza, escape l'input dell'utente
$first_name = mysqli_real_escape_string($link, $_REQUEST['first_name']);
$last_name = mysqli_real_escape_string($link, $_REQUEST['last_name']);
$email = mysqli_real_escape_string($link, $_REQUEST['email']);
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if (mysqli_query($link, $sql)) {
    echo "Record aggiunto con successo.";
} else {
    echo "Errore: Impossibile eseguire $sql. " . mysqli_error($link);
}
 
//Chiusura della connessione
mysqli_close($link);
?>

Esempio: metodo orientato agli oggetti

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Verifica la connessione
if ($mysqli === false) {
    die("Errore: Impossibile connettersi. " . $mysqli->connect_error);
}
 
//Per la sicurezza, escape l'input dell'utente
$first_name = $mysqli->real_escape_string($_REQUEST['first_name']);
$last_name = $mysqli->real_escape_string($_REQUEST['last_name']);
$email = $mysqli->real_escape_string($_REQUEST['email']);
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('$first_name', '$last_name', '$email')";
if ($mysqli->query($sql) === true) {
    echo "记录插入成功。";
} else {
    echo "Errore: Impossibile eseguire $sql. " . $mysqli->error;
}
 
//Chiusura della connessione
$mysqli->close();
?>

示例:PDO方式

<?php
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    //将PDO错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("错误:无法连接。" . $e->getMessage());
}
 
//尝试执行插入查询
try{
    //CREATE PREPARE语句
    $sql = "INSERT INTO persons (first_name, last_name, email) VALUES (:first_name, :last_name, :email)";
    $stmt = $pdo->prepare($sql);
    
    //将参数绑定到语句
    $stmt->bindParam(':first_name', $_REQUEST['first_name']);
    $stmt->bindParam(':last_name', $_REQUEST['last_name']);
    $stmt->bindParam(':email', $_REQUEST['email']);
    
    //执行准备好的语句
    $stmt->execute();
    echo "记录插入成功。";
} catch(PDOException $e){
    die("错误:无法执行 $sql. " . $e->getMessage());
}
 
// Close connection
unset($pdo);
?>

在下一章中,我们将扩展此插入查询示例,并通过实现准备好的语句来进一步提高安全性和性能,从而将其进一步发展。

注意:mysqli_real_escape_string()函数转义字符串中的特殊字符并创建合法的SQL字符串以提供防止SQL注入的安全性。

这是在MySQL数据库表中插入表单数据的非常基本的示例。您可以扩展此示例,使其更具交互性,方法是将验证添加到用户输入中,然后再将其插入数据库表。请查看有关PHP表单验证的教程,以了解有关使用PHP 清理和验证用户输入的更多信息。