Position actuelle: Accueil> Derniers articles> Comment rédiger une couche d'accès à la base de données plus stable à l'aide de MySQLI_STMT :: $ ERROR

Comment rédiger une couche d'accès à la base de données plus stable à l'aide de MySQLI_STMT :: $ ERROR

gitbox 2025-05-28

Dans le développement de PHP, l'accès à la base de données est une opération courante, en particulier lorsqu'un projet nécessite un grand nombre d'opérations dans la base de données, la stabilité et la gestion des erreurs de la base de données sont particulièrement importantes. MySQLI est une extension de base de données couramment utilisée dans PHP. Il fournit des fonctions utiles pour aider les développeurs à obtenir un accès de base de données efficace et fiable.

Dans cet article, nous explorerons comment utiliser la fonction d'erreur MySQLI_STMT :: $ pour améliorer la stabilité de la couche d'accès à la base de données. MySQLI_STMT :: $ L'erreur est une propriété de la classe MySQLI_STMT qui est utilisée pour obtenir des informations d'erreur qui se produisent lorsque des instructions de prétraitement sont exécutées. En utilisant de manière appropriée cette propriété, nous pouvons saisir et gérer efficacement les erreurs, garantissant que les exceptions pendant l'accès à la base de données peuvent être correctement gérées, améliorant ainsi la stabilité du système.

Qu'est-ce que MySQLI_STMT :: $ ERROR ?

Dans PHP, la classe MySQLI_STMT est utilisée pour traiter les instructions préparées. Par des déclarations de prétraitement, nous pouvons améliorer les performances de la requête tout en évitant les attaques d'injection SQL. L'attribut d'erreur MySQLI_STMT :: $ est utilisé pour obtenir des informations d'erreur qui se produisent lors de l'exécution des instructions préparées. Si l'exécution réussit, il renvoie une chaîne vide. Si l'exécution échoue, une chaîne décrivant l'erreur est renvoyée.

Exemple de code:

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

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

// Préparer SQL Déclaration
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if ($stmt === false) {
    die('PréparerDéclaration失败: ' . $mysqli->error);
}

// Lier les paramètres
$id = 1;
$stmt->bind_param("i", $id);

// 执行Déclaration
$stmt->execute();

// Vérifier les erreurs
if ($stmt->error) {
    die('执行Déclaration失败: ' . $stmt->error);
} else {
    echo "Interroger réussi!";
}

// 关闭Déclaration和连接
$stmt->close();
$mysqli->close();
?>

Dans l'exemple ci-dessus, nous établissons d'abord une connexion de base de données et préparons une requête SQL. Ensuite, liez les paramètres via bind_param et exécutez l'instruction. Nous vérifions si une erreur s'est produite lors de l'exécution via la propriété $ stmt-> Erreur . S'il y a une erreur, publiez le message d'erreur et arrêtez l'exécution.

Comment améliorer la stabilité à l'aide de l'erreur MySQLI_STMT :: $ ?

1. Catchez les erreurs SQL pour éviter les accidents du programme

MySQLI_STMT :: $ L'erreur peut nous aider à attraper des erreurs dans l'exécution de SQL et à empêcher le programme de s'écraser lorsqu'une erreur de base de données se produit. En jugeant si $ stmt-> l'erreur est vide, nous pouvons découvrir le problème dans le temps et donner des invites correspondantes pour empêcher l'erreur de continuer à se propager.

Exemple de code:

 <?php
$stmt = $mysqli->prepare("UPDATE users SET name = ? WHERE id = ?");
if ($stmt === false) {
    die("PréparerDéclaration失败: " . $mysqli->error);
}

// Simuler une erreur
$name = 'John Doe';
$id = 'invalid_id';  // Supposons ici ID invalide

$stmt->bind_param("si", $name, $id);
$stmt->execute();

// Vérifiez si l&#39;exécution est réussie
if ($stmt->error) {
    die("La mise à jour a échoué: " . $stmt->error);
}
echo "Mettre à jour avec succès!";
?>

Dans ce code, si une erreur SQL se produit ou si l'exécution échoue, le message d'erreur sera capturé et sorti pour s'assurer que le programme ne se bloque pas en raison de la défaillance de l'opération de base de données.

2. Améliorer la stabilité de la connexion de la base de données

L'utilisation de MySQLI_STMT :: $ L'erreur peut également améliorer la stabilité des connexions de la base de données. Par exemple, les erreurs de connexion sont des exceptions courantes lors de l'accès à une base de données. MySQLI_STMT :: $ ERROR peut vérifier l'état de la connexion de la base de données à temps pour éviter que les opérations suivantes ne soient exécutées en raison de l'échec de la connexion.

Exemple de code:

 <?php
// Connectez-vous à la base de données时Vérifier les erreurs
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

// Exécuter une requête de base de données
$query = "SELECT * FROM non_existent_table";
$result = $mysqli->query($query);

// Vérifiez si l&#39;exécution de la requête est réussie
if (!$result) {
    die("La requête a échoué: " . $mysqli->error);
}

while ($row = $result->fetch_assoc()) {
    echo "nom d&#39;utilisateur: " . $row['name'];
}

$mysqli->close();
?>

Dans cet exemple, nous exécutons délibérément un tableau où la requête n'existe pas. En vérifiant $ MySQLI-> Erreur et $ stmt-> Erreur , nous pouvons capturer et traiter les erreurs dans le temps, empêchant ainsi le programme de continuer à effectuer des opérations invalides.

3. L'exploitation et surveillance des erreurs

En plus d'afficher les messages d'erreur à l'avant, les développeurs peuvent également enregistrer des messages d'erreur dans le journal pour faciliter le dépannage et la surveillance futurs. Les informations d'erreur obtenues via MySQLI_STMT :: $ L'erreur peut être écrite dans un fichier journal pour l'analyse et la résolution par les développeurs.

Exemple de code:

 <?php
// Supposons que le code qui exécute la requête est le même qu&#39;avant
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();

// Vérifier les erreurs并Enregistrement
if ($stmt->error) {
    // Enregistrement
    error_log("La requête a échoué: " . $stmt->error, 3, '/path/to/error.log');
    die("Une erreur s&#39;est produite,Veuillez réessayer plus tard。");
}
?>

De cette façon, les messages d'erreur seront écrits dans le fichier journal, tandis que les utilisateurs verront des invites amicales pour éviter d'exposer les détails d'erreur de base de données sensibles.

Résumer

MySQLI_STMT :: $ L'erreur est une propriété très pratique en PHP qui aide les développeurs à attraper et à gérer les erreurs dans l'exécution de SQL. En utilisant rationnellement cet attribut, nous pouvons non seulement améliorer la stabilité de la couche d'accès à la base de données, mais aussi améliorer la robustesse de l'application. Dans le développement réel, la garantie de la stabilité des opérations de base de données est très importante, et la capture et le traitement des erreurs sont des étapes clés pour garantir une disponibilité élevée du système.