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.
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'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);
}
?>
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 (?, ?)";
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);
}
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.
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'enregistrement avec succès。Inséré ID pour: " . $conn->insert_id;
} else {
echo "L'insertion a échoué: " . $stmt->error;
}
Ici, $ Conn-> INSERT_ID renverra l'ID de mise en oin de l'enregistrement inséré.
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();
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'enregistrement avec succès。Inséré ID pour: " . $conn->insert_id;
} else {
echo "L'insertion a échoué: " . $stmt->error;
}
$stmt->close();
$conn->close();
?>