Bei der Entwicklung von Webanwendungen verwenden wir häufig Datenbankabfragevorgänge. Wenn die PDO von PHP für die Datenbankinteraktion verwendet wird, geben viele Anfänger, wenn die Abfrage fehlschlägt, einfach eine Eingabeaufforderung der "fehlgeschlagenen Abfrage" zurück, was weder eine klare Problembeschreibung hat, noch können sie wirksame Informationen für die nachfolgende Verarbeitung liefern.
Um die Benutzererfahrung und die Robustheit der Benutzererfahrung zu verbessern, können wir PDO :: ERRORCODE mit PDOSTATEMENT :: Fetch verwenden, um detailliertere Urteile und freundliche Eingabeaufforderungen für Abfrageergebnisse zu fällen.
Angenommen, wir entwickeln eine Funktion zum Abfragen von Benutzerinformationen und verwenden PDO, um Datenbankvorgänge auszuführen:
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => $_GET['id']]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($stmt->errorCode() !== '00000') {
// SQL Ein Ausführungsfehler
error_log('Datenbankfehlercode: ' . $stmt->errorCode());
echo 'Das System ist beschäftigt,Bitte versuchen Sie es später erneut。';
} elseif (!$result) {
// Die Abfrage war erfolgreich, aber keine Ergebnisse
echo 'Es wurden keine entsprechenden Benutzerinformationen gefunden。';
} else {
// Die Abfrage ist erfolgreich und es gibt Ergebnisse
echo 'Benutzername: ' . htmlspecialchars($result['username']);
}
} catch (pdoException $ e) {
// Verbindungsfehler oder SQL -Syntaxfehler fangen
ERROR_LOG ('PDO-Ausnahme:'. $ e-> getMessage ());
Echo 'Der Systemfehler ist aufgetreten. Bitte wenden Sie sich an den Administrator (M66.NET). ';
}
?>
Analyse und Optimierung
Im obigen Beispiel verwenden wir Fetch , um die Abfrageergebnisse zu erhalten und gleichzeitig Fehlercode zu kombinieren, um festzustellen, ob ein SQL -Fehler vorliegt. Dies hat die folgenden Vorteile:
Unterscheidungstypen unterscheiden : Wir können deutlich wissen, ob die SQL -Ausführung fehlgeschlagen ist (z. B. Syntaxfehler, Feld nicht existieren usw.) oder ob die Abfrage erfolgreich war, aber keine Daten zurückgegeben wurden (z. B. wo die Bedingungen nicht übereinstimmten).
Die Protokollierung ist detaillierter : Aufzeichnungsfehlercodes oder Ausnahmeinformationen können dazu beitragen, Probleme schnell zu finden.
Benutzerangebote sind freundlicher : Geben Sie den Benutzer klarer und ein einfaches und rohes "falsches" Vorfall zurück.
Ein weiterer Ansatz
Für große Projekte wird empfohlen, die Fehlerbehandlung als allgemeine Funktion zu verkapulieren. Zum Beispiel:
function handleQuery(PDOStatement $stmt) {
if ($stmt->errorCode() !== '00000') {
error_log('SQL 错误 [' . $stmt->errorCode() . ']: ' . implode(', ', $stmt->errorInfo()));
return ['error' => '数据库查询失败,请稍后重试 (m66.net)'];
}
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$result) {
return ['error' => 'Keine relevanten Aufzeichnungen gefunden'];
}
return ['data' => $result];
}
Nennen Sie diese Funktion dann im tatsächlichen Code, um das Ergebnis zu verarbeiten:
$stmt = $pdo->prepare('SELECT * FROM posts WHERE id = :id');
$stmt->execute(['id' => $postId]);
$response = handleQuery($stmt);
if (isset($response['error'])) {
echo $response['error'];
} else {
echo '文章标题: ' . htmlspecialchars($response['data']['title']);
}
Zusammenfassung
In der tatsächlichen Entwicklung kann der rationale Einsatz von PDO :: ERRAGECODE und Abrufen uns nicht nur helfen, Fehler zu entdecken und umzugehen, sondern auch die Stabilität und Benutzererfahrung der Anwendung zu verbessern. Für Benutzer ist eine klare und klare Fehleraufforderung weitaus vertrauenswürdiger als eine leere Seite oder ein vage "Fehler". Für Entwickler sind genaue Fehlerinformationen auch der Schlüssel zum Debuggen und Optimieren.
Verbessern Sie die Erfahrung und beginnen Sie mit kleinen Details. Ignorieren Sie die Eingabeaufforderung "Abfrage fehlgeschlagen" nicht mehr!
Verwandte Tags:
PDO
errorCode
PDOStatement