Position actuelle: Accueil> Derniers articles> Utilisez $ errno et mysqli_stmt pour déterminer si l'instruction de prétraitement échoue

Utilisez $ errno et mysqli_stmt pour déterminer si l'instruction de prétraitement échoue

M66 2025-06-05

Les instructions de prétraitement fournissent un moyen sûr d'empêcher les attaques d'injection SQL lors de l'utilisation de PHP pour les opérations de base de données. À l'aide de l'extension MySQLI , vous pouvez exécuter des instructions de prétraitement via l'objet mysqli_stmt . Lors de l'exécution des instructions de prétraitement, il est parfois nécessaire de déterminer si l'instruction est exécutée avec succès. MySqli :: $ errno et mysqli_stmt sont des outils puissants pour nous juger des échecs d'exécution.

Cet article présentera comment utiliser ces deux pour déterminer si une instruction de prétraitement a échoué et fournir des exemples de code correspondants.

1. Que sont MySqli :: $ Errno et MySqli_Stmt ?

  • mysqli :: $ errno : il s'agit d'une propriété de la classe mysqli qui renvoie le code d'erreur qui s'est produit dans la dernière opération MySQL. Si aucune erreur ne se produit, la valeur sera 0 .

  • MySQLI_STMT : Il s'agit d'une classe fournie par l'extension MySQLI , représentant une instruction de prétraitement. Vous pouvez exécuter des requêtes SQL via cette classe et passer des paramètres.

Grâce à ces deux outils, vous pouvez vérifier si une erreur s'est produite après l'exécution d'une requête SQL, gérant ainsi les exceptions connexes.

2. Utilisez mysqli :: $ errno pour déterminer s'il y a une erreur

Tout d'abord, jetons un coup d'œil à utiliser MySQLI :: $ Errno pour déterminer si l'opération de base de données échoue.

 <?php
// Connectez-vous à la base de données
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// Rédiger des déclarations de prétraitement
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");

// Vérifiez si la déclaration de prétraitement est réussie
if ($stmt === false) {
    die("Prepare failed: " . $mysqli->errno . " - " . $mysqli->error);
}

// Lier les paramètres
$email = 'test@example.com';
$stmt->bind_param('s', $email);

// Instruction d&#39;exécution
$stmt->execute();

// Vérifiez si l&#39;exécution est réussie
if ($stmt->errno) {
    echo "Error occurred: " . $stmt->errno . " - " . $stmt->error;
} else {
    echo "Query executed successfully!";
}

// Clôtures et connexions étroites
$stmt->close();
$mysqli->close();
?>

3. Expliquez le code

  • Nous nous connectons d'abord à la base de données MySQL. Si la connexion échoue, vérifiez l'erreur via $ mysqli-> connect_error .

  • Ensuite, nous préparons une instruction de requête SQL et vérifions si PREPAY () réussit. S'il échoue, nous utilisons $ mysqli-> errno pour obtenir le code d'erreur et publier le message d'erreur.

  • Après avoir lié les paramètres, nous exécutons l'instruction et utilisons $ stmt-> errno pour déterminer s'il y a des erreurs pendant le processus d'exécution. Si la valeur de Errno est supérieure à 0, cela signifie que l'exécution a échoué. Vous pouvez obtenir les détails d'erreur via $ stmt-> erreur .

4. Gestion des erreurs à l'aide de mysqli_stmt

En plus de $ mysqli :: $ errno , l'objet mysqli_stmt lui-même fournit également des attributs errno et d'erreur pour juger l'état d'exécution de l'instruction de prétraitement. Nous pouvons utiliser MySQLI_STMT :: Errno pour capturer le code d'erreur pendant l'exécution.

 <?php
// Créer une connexion
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// Déclaration de préparation
$stmt = $mysqli->prepare("INSERT INTO users (name, email) VALUES (?, ?)");

// Lier les paramètres
$name = 'John Doe';
$email = 'john@example.com';
$stmt->bind_param('ss', $name, $email);

// Instruction d&#39;exécution
if (!$stmt->execute()) {
    echo "Execute failed: " . $stmt->errno . " - " . $stmt->error;
} else {
    echo "Insert successful!";
}

// Fermez la ressource
$stmt->close();
$mysqli->close();
?>

Dans l'exemple ci-dessus, $ stmt-> execute () renvoie une valeur booléenne. Si l'exécution échoue, le message d'erreur est sorti via $ stmt-> errno et $ stmt-> erreur .

5. Résumé

  • Utilisez mysqli :: $ errno et mysqli_stmt pour capturer efficacement les erreurs lors de l'exécution de MySQL.

  • Via mysqli_stmt :: errno et mysqli_stmt :: error , la cause de l'échec peut être clairement obtenue et le traitement correspondant peut être effectué.

  • Ces outils peuvent vous aider à mieux déboguer et gérer les erreurs dans les opérations de base de données, en garantissant la robustesse et la sécurité de votre code.

J'espère que cet article vous sera utile en utilisant l'extension MySQLI pour les opérations de base de données!