Position actuelle: Accueil> Derniers articles> Comment effectuer une opération d'insertion à l'aide de la fonction MySQLI :: STMT_INIT et obtenez l'ID d'auto-incitation (INSERT_ID)

Comment effectuer une opération d'insertion à l'aide de la fonction MySQLI :: STMT_INIT et obtenez l'ID d'auto-incitation (INSERT_ID)

M66 2025-07-10

Dans PHP, lorsque vous utilisez une base de données MySQL, vous pouvez interagir avec la base de données via l'extension MySQLI . Lorsque vous souhaitez effectuer une opération d'insertion et obtenir l'ID d'auto-incitation des données insérées dans la base de données en même temps, vous pouvez utiliser la fonction MySQLI :: STMT_INIT pour y parvenir. Ensuite, nous expliquerons en détail comment utiliser mysqli :: stmt_init pour terminer cette tâche.

Étape 1: Créez une connexion de base de données

Tout d'abord, nous devons établir une connexion de base de données. Pour assurer la sécurité du code, il est recommandé d'utiliser la méthode orientée objet de MySQLI pour se connecter à la base de données. Voici l'exemple de code pour une connexion de base de données:

 <?php
$host = 'localhost'; // Hôte de base de données
$user = 'root';      // Nom d&#39;utilisateur de base de données
$password = '';      // Mot de passe de base de données
$dbname = 'test';    // Nom de base de données

// Créer une connexion de base de données
$conn = new mysqli($host, $user, $password, $dbname);

// Vérifiez si la connexion réussit
if ($conn->connect_error) {
    die("Échec de la connexion: " . $conn->connect_error);
}
?>

Étape 2: Préparer les instructions SQL

Lors de la préparation à effectuer une opération d'insertion , nous devons d'abord rédiger une instruction SQL. Grâce à la fonction mysqli :: stmt_init , nous pouvons initialiser une instruction préparée. Dans l'exemple suivant, nous insérons un nouvel utilisateur dans le tableau des utilisateurs .

 $sql = "INSERT INTO users (username, email) VALUES (?, ?)";

Étape 3: Initialiser la déclaration

Nous pouvons utiliser MySQLI :: STMT_INIT pour initialiser un objet d'instruction. Grâce à cet objet, nous pouvons lier les paramètres et exécuter des requêtes.

 $stmt = $conn->stmt_init();
if (!$stmt->prepare($sql)) {
    die("SQL erreur: " . $stmt->error);
}

Étape 4: lier les paramètres

Ensuite, nous devons lier la valeur réelle à l'espace réservé ( ? ) Dans l'instruction SQL. Utilisez la méthode Bind_param pour terminer la liaison des paramètres. Supposons que le nom d'utilisateur que nous voulons insérer est Johndoe et que l'e-mail est johndoe@m66.net , vous pouvez l'écrire comme ceci:

 $username = 'johndoe';
$email = 'johndoe@m66.net';

// Lier les paramètres
$stmt->bind_param("ss", $username, $email);

Dans le code ci-dessus, "SS" signifie que nous avons lié deux paramètres de type chaîne.

Étape 5: Exécutez les instructions SQL et obtenez l'ID auto-incrémenté

Après avoir effectué l'opération d'insertion , MySQL générera automatiquement un ID d'auto-incitation pour l'enregistrement nouvellement inséré. Nous pouvons obtenir cet ID via la propriété Insert_id .

 if ($stmt->execute()) {
    echo "Nouvelle insertion d&#39;enregistrement avec succès。Inséré ID pour: " . $conn->insert_id;
} else {
    echo "L&#39;insertion a échoué: " . $stmt->error;
}

Ici, $ Conn-> INSERT_ID renverra l'ID de mise en oin de l'enregistrement inséré.

Étape 6: Fermez la connexion

Après avoir effectué l'opération d'insertion, n'oubliez pas de fermer l'instruction et la connexion de la base de données.

 $stmt->close();
$conn->close();

Exemple de code complet

Voici un exemple complet de code indiquant comment effectuer une opération d'insertion à l'aide de MySQLI :: STMT_INIT et d'obtenir l'ID de mise en oin.

 <?php
$host = 'localhost';
$user = 'root';
$password = '';
$dbname = 'test';

$conn = new mysqli($host, $user, $password, $dbname);

if ($conn->connect_error) {
    die("Échec de la connexion: " . $conn->connect_error);
}

$sql = "INSERT INTO users (username, email) VALUES (?, ?)";

$stmt = $conn->stmt_init();
if (!$stmt->prepare($sql)) {
    die("SQL erreur: " . $stmt->error);
}

$username = 'johndoe';
$email = 'johndoe@m66.net';

$stmt->bind_param("ss", $username, $email);

if ($stmt->execute()) {
    echo "Nouvelle insertion d&#39;enregistrement avec succès。Inséré ID pour: " . $conn->insert_id;
} else {
    echo "L&#39;insertion a échoué: " . $stmt->error;
}

$stmt->close();
$conn->close();
?>