2016-07-29 7 views
0

Ich muss Datenbankverbindung in einigen PHP-Skripten enthalten. Also benötige ich zuerst (und) dann meine Abfragen danach. Wenn es als ein einzelnes Skript betrachtet wird, ergibt es Folgendes: Ist es sicher, MySQL-Abfragen außerhalb zu versuchen {

Try { 
$connect = new PDO("mysql:host={$DB_host};dbname={$DB_name}; charset=utf8mb4",$DB_user,$DB_pass); 
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

Catch(PDOException $e) { 
echo $e->getMessage(); 
} 
// Then I put the queries here 
Es funktioniert, aber meine Frage ist: Ist das sicher? Ich habe in den meisten Tutorials gesehen, dass sie alle Abfragen innerhalb von geschweiften Klammern setzen. Und was ist der Unterschied zwischen dem Setzen der Abfragen innerhalb Try { } und dem Nachsetzen?

Antwort

1

Wenn Ihre Abfrage aus irgendeinem Grund fehlschlägt, stürzt das Programm bei der Codezeile ab, die die Abfrage ausgeführt hat. Es kann gerechtfertigt sein, dies zu tun, wenn dies ein Verhalten ist, das Sie in Ihrem Code wünschen, aus welchem ​​Grund auch immer.

Ohne die Fehlerbehandlung bricht Ihr Programm nur, wenn ein Fehler ausgelöst wird. Also, es sei denn, Sie müssen speziell die Abfrage außerhalb der Versuch fangen (ich konnte nicht erraten, wofür), dann werden Sie nur Probleme für sich selbst in der Zukunft erstellen.

0

Wenn während der Abfrage eine Ausnahme auftritt (wenn die Abfrage beispielsweise aufgrund eines fehlenden Zitats nicht ordnungsgemäß ausgeführt werden kann), wird der Fehler nicht abgefangen und die Ausführung des Skripts wird angehalten.

Fehlerbehandlung wird normalerweise immer bevorzugt, wenn möglich. Wenn ein Problem beim Abrufen von Daten, Einfügen von Daten oder einfach nur Tippfehlern in der Abfrage auftritt, sollten Sie immer einen Benutzer benachrichtigen können, dass ein Fehler aufgetreten ist (und ihn für weitere Untersuchungen selbst protokollieren.)

+0

Illuminative Kommentare. Jetzt weiß ich, dass ich sehr falsch lag. Wie stelle ich meine Abfrage in try catch, ohne das Verbindungsskript auf jeder Seite einzugeben? Zum Beispiel: Include ('connect.php'); $ sql = "SELECT * FROM Benutzer"; Wie gebe ich $ sql in das enthaltene Skript ein? Entschuldigung; Ich bin noch neu in PHP/MySQL. Vielen Dank. – Benny64

+0

Nicht in die 'connect.php' aufnehmen. Verwenden Sie einfach Ihre eigenen try/catch-Blöcke in Ihrem Code (Außerhalb von 'connect.php') und behandeln Sie sie entsprechend. – FrankerZ

Verwandte Themen