Position actuelle: Accueil> Derniers articles> À quoi devriez-vous faire attention lors de la commutation entre l'APD et MySqli :: $ connect_error?

À quoi devriez-vous faire attention lors de la commutation entre l'APD et MySqli :: $ connect_error?

gitbox 2025-05-26

1. La différence essentielle entre les erreurs de connexion APD et MySQLI

  • : Rapport les erreurs de connexion et de requête via le mécanisme d'exception ( PDOException ). Le code peut être capturé à l'aide de Try ... Catch , et les informations d'exception contiennent des descriptions d'erreur détaillées.

  • mysqli : utilisez des propriétés et des méthodes telles que $ mysqli-> connect_error et $ mysqli-> connect_errno pour signaler les erreurs de connexion. Les erreurs ne lancent pas automatiquement des exceptions et doivent être détectées et traitées activement.

En d'autres termes, l'APD s'appuie davantage sur les mécanismes d'exception, tandis que MySQLI s'appuie davantage sur la vérification des erreurs explicites.

2. Comparaison des codes de base pour la connexion à la base de données MySQL

Exemple de connexion PDO

 try {
    $pdo = new PDO('mysql:host=gitbox.net;dbname=testdb;charset=utf8', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connexion avec succès";
} catch (PDOException $e) {
    echo "Échec de la connexion: " . $e->getMessage();
}

Exemple de connexion mysqli

 $mysqli = new mysqli('gitbox.net', 'username', 'password', 'testdb');
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}
echo "Connexion avec succès";

Remarque: MySqli obtient le message d'erreur de connexion via $ mysqli-> connect_error , et ne lancera pas automatiquement des exceptions et doit être vérifié manuellement.

3. Les pièges auxquels faire attention lors du passage de l'APD à MySqli :: $ connect_error

1. Modifications de la gestion des erreurs

  • L'OPD utilise des exceptions et la structure du code est plus simple et plus sûre.

  • MySqli doit juger explicitement $ mysqli-> connect_error ou $ mysqli-> connect_errno .

Si vous avez l'habitude d'utiliser Try ... Catch pour attraper des exceptions, vous devez ajuster la logique de traitement des erreurs après le passage à MySQLI.

2. Paramètres de codage

PDO spécifie directement le jeu de caractères dans la chaîne de connexion DSN, telle que charset = utf8 , MySQLI nécessite des appels supplémentaires:

 $mysqli->set_charset('utf8');

Sinon, il y aura des problèmes avec le code chinois brouillé.

3. Différence des options de connexion

PDO prend en charge de nombreuses options de connexion, tandis que MySQLI prend en charge certaines options. Par exemple:

  • L'OPD peut être activé avec PDO :: att_persistent .

  • MySQLI nécessite un traitement supplémentaire ou utiliser différentes façons d'activer les connexions persistantes.

4. Différences de déclaration de prétraitement

  • La déclaration de prétraitement PDO utilise $ stmt = $ PDO-> Préparer ($ SQL); Pour prendre en charge la liaison des paramètres nommés.

  • L'instruction MySQLI PRÉCROSSING utilise $ stmt = $ mysqli-> prépare ($ sql); , et seuls les espaces réservés d'interrogation sont soutenus.

Si le code d'origine utilise un grand nombre de paramètres nommés, il doit être réécrit comme point d'interrogation.

5. Détails de capture d'exception

MySQLI ne lance pas des exceptions par défaut. Si vous souhaitez simuler la capture d'exception de l'APD, vous pouvez activer la fonction d'exception MySQLI:

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

Après ouverture, MySQLI lancera MySQLI_SQL_EXCEPT , qui est plus facile à gérer les erreurs de manière unifiée.

4. Résumé

projet PDO mysqli
Gestion des erreurs Exception Catch (essayez ... Catch) Vérifiez à l'extérieur $ connect_error pour activer les exceptions
Format de chaîne de connexion String DSN (Charset peut être défini) Définir Charset séparément, vous devez appeler set_charset ()
Liaison des paramètres de prétraitement Soutenir les paramètres de dénomination Seuls les espaces d'interrogation sont soutenus
Support de connexion persistant Défini par options Besoin de méthodes différentes pour mettre en œuvre

En bref, le passage de l'APD à MySQLI n'est pas seulement une méthode de connexion de remplacement, mais également en considérant de manière approfondie les différences de gestion des erreurs, de paramètres de codage, de relevés de prétraitement, etc. pour éviter les bogues implicites causés par une inadaptation.