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

Tutoriel PHP de base

Tutoriel PHP avancé

PHP & MySQL

Manuel de référence PHP

Insertion de données MySQL PHP

Dans ce tutoriel, vous allez apprendre à insérer des enregistrements dans des tables MySQL en utilisant PHP.

Insérer des données dans une table de base de données MySQL

Maintenant, vous avez déjà appris à créer des bases de données et des tables dans MySQL. Dans ce tutoriel, vous allez apprendre à exécuter des requêtes SQL pour insérer des enregistrements dans les tables.

INSERT INTOest utilisé pour insérer une nouvelle ligne dans la table de base de données.

Laissez-nous exécuter une requête SQL avec une expression INSERT INTO appropriée, puis exécuter cette requête INSERT en passant la requête INSERT à la fonction PHP mysqli_query() pour insérer des données dans la table. Voici un exemple qui spécifiefirst_name,last_nameetemailLa valeur du champ verspersonsInsérer une nouvelle ligne dans la table.

Exemple : méthode procédurale

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Vérifier la connexion
if($link === false){
    die("Erreur : Impossible de se connecter. " . mysqli_connect_error());
}
 
//尝试执行插入查询
$sql = "INSERT INTO persons (first_name, last_name, email) VALUES ('Peter', 'Parker', '[email protected]')";
if(mysqli_query($link, $sql)){
    echo \
}
    echo "Erreur : Impossible d'exécuter $sql. " . mysqli_error($link);
}
 
//关闭连接
mysqli_close($link);
?>

Exemple : méthode orientée objet

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Vérifier la connexion
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-if(query($sql) === true){
    echo \
}
    echo "Erreur : Impossible d'exécuter $sql." . $mysqli->error;
}
 
//关闭连接
$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());
}
 
//关闭连接
unset($pdo);
?>

Si vous vous rappelezLe contenu du chapitre précédentalorsidLe champ est marqué avec l'attribut AUTO_INCREMENT. Ce modificateur indique à MySQL que si cette valeur n'est pas spécifiée, la valeur précédente sera augmentée1Pour attribuer automatiquement une valeur à ce champ.

Insérer plusieurs lignes dans la table

Vous pouvez également insérer plusieurs lignes dans la table en une seule requête d'insertion. Pour cela, incluez plusieurs listes de valeurs de colonnes dans l'expression INSERT INTO, et chaque valeur de ligne doit être encadrée par des parenthèses et séparée par des virgules.

Laissez-nous danspersonsInsérez plusieurs lignes dans la table, comme suit :

Exemple : méthode procédurale

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Vérifier la connexion
if($link === false){
    die("Erreur : Impossible de se connecter. " . 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 "L'ajout de l'enregistrement a réussi. ";
}
    echo "Erreur : Impossible d'exécuter $sql. " . mysqli_error($link);
}
 
//关闭连接
mysqli_close($link);
?>

Exemple : méthode orientée objet

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Vérifier la connexion
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-if(query($sql) === true){
    echo \
}
    echo "Erreur : Impossible d'exécuter $sql." . $mysqli->error;
}
 
//关闭连接
$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("Erreur : Impossible de se connecter. " . $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());
}
 
//关闭连接
unset($pdo);
?>

Maintenant, allez à phpMyAdmin (http://localhost//,DemonstrationDans la base de donnéesPersonnelLes données de la table.IDLa valeur de la colonne ID est obtenue en ajoutant la valeur précédenteID增加值1自动分配。

注意: Les instructions SQL peuvent contenir un nombre quelconque de retours à la ligne, à condition que les retours à la ligne ne cassent pas les mots-clés, les valeurs, les expressions, etc.

Insérer des données depuis un formulaire HTML dans une base de données

Dans la section précédente, nous avons appris à insérer des données dans une base de données à partir d'un script PHP. Maintenant, nous verrons comment insérer des données dans une base de données provenant d'un formulaire HTML. Créons un formulaire HTML qui peut être utilisé pour insérer de nouveaux enregistrementsPersonnelTableau.

Étapes1Création d'un formulaire HTML

C'est un simple formulaire HTML qui contient trois champs de texte<input>Champs et un bouton de soumission.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ajouter un enregistrement - Formulaire</title>
</head>
<form action="insert.php" method="post">
    <p>
        <label for="firstName">Prénom :</label>
        <input type="text" name="first_name" id="firstName">
    </p>
    <p>
        <label for="lastName">Nom :</label>
        <input type="text" name="last_name" id="lastName">
    </p>
    <p>
        <label for="emailAddress">Adresse e-mail :</label>
        <input type="text" name="email" id="emailAddress">
    </p>
    <input type="submit" value="Soumettre">
</form>
</html>
Vérifiez et voyez‹/›

Étapes2Récupération et insertion des données du formulaire

Dans l'exemple ci-dessus, lorsque l'utilisateur clique sur le bouton de soumission du formulaire HTML pour ajouter un enregistrement, les données du formulaire sont envoyées au fichier "insert.php". Le fichier "insert.php" se connecte au serveur de base de données MySQL, utilise les variables $_REQUEST de PHP pour rechercher les champs du formulaire et exécute finalement une requête d'insertion pour ajouter l'enregistrement. Voici le code complet de notre fichier "insert.php" :

Exemple : méthode procédurale

<?php
$link = mysqli_connect("localhost", "root", "", "demo");
 
//Vérifier la connexion
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
//Pour des raisons de sécurité, échapper aux entrées de l'utilisateur
$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 "L'ajout de l'enregistrement a réussi. ";
}
    echo "Erreur : Impossible d'exécuter $sql. " . mysqli_error($link);
}
 
//关闭连接
mysqli_close($link);
?>

Exemple : méthode orientée objet

<?php
$mysqli = new mysqli("localhost", "root", "", "demo");
 
//Vérifier la connexion
if($mysqli === false){
    die("Erreur : Impossible de se connecter. " . $mysqli->connect_error);
}
 
//Pour des raisons de sécurité, échapper aux entrées de l'utilisateur
$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-if(query($sql) === true){
    echo \
}
    echo "Erreur : Impossible d'exécuter $sql." . $mysqli->error;
}
 
//关闭连接
$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 = \
    $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 清理和验证用户输入的更多信息。