PHP connection reset ungewollt?

...komplette Frage anzeigen

2 Antworten

Gibt es einen bestimmten Grund, warum du nicht mit MySQLi oder PDO verwendest? Wenn nicht, würde ich dir empfehlen umzustellen, undzwar auf die objektorientierte Variante.

Bei diesem mir unbekannten DatabaseHelper kann ich dir leider nicht weiterhelfen, aber trotzdem sollte ich dich darauf hinweisen, dass dein Code anfällig für SQL-Injection ist, siehe eine Antwort von mir auf eine ähnliche Frage:

Außerdem ist dein Code extrem anfällig für SQL-Injection, da du einen vom User eingegebenen Wert direkt in ein SQL-Statement einbaust. Das Problem ist, der Nutzer könnte statt einer Zahl einen gültigen SQL-Teilbefehl eintippen, durch den die gesamte SQL-Anweisung manipuliert werden kann.

Beispiel für deinen Fall:

"SELECT titel, text FROM aufgaben WHERE aufgabennummer = $num"

Angenommen der Nutzer gibt jetzt ein: "123 OR 1=1"

Dann lautet das vollständige Statement:

"SELECT titel, text FROM aufgaben WHERE aufgabennummer = 123 OR 1=1"

Und zack! Es wird jede Zeile aus aufgaben zurückgegeben, weil 1=1 immer wahr ist.

Oder noch schlimmer:

"SELECT titel, text FROM aufgaben WHERE aufgabennummer = 123; DROP TABLE aufgaben;"

Und wieder zack! Die Tabelle wird sogar gelöscht.

Früher hat man das ganze durch sogenanntes Escapen gelöst. Heute gibt es eine noch bequemere Alternative: Die Prepared Statements.

Dabei wird an die Datenbank zunächst ein Statement mit Platzhaltern gesendet:

"SELECT titel, text FROM aufgaben WHERE aufgabennummer = ?"

oder mit benannten Platzhaltern:

"SELECT titel, text FROM aufgaben WHERE aufgabennummer = :num"

Anschließend werden in einem zweiten Request die eigentlichen Daten übersendet. Dies verhindert, dass das eigentliche Statement manipuliert werden kann, weil die Datenbank genau weiß, dass es sich um eine Variable handelt.
PDO emuliert Prepared Statements sogar für nicht unterstützte Treiber.

Hier findest du weitere Informationen dazu:

http://php.net/manual/de/pdo.prepared-statements.php

(https://www.gutefrage.net/frage/php-query-ausgeben?foundIn=list-answers-by-user#answer-253443992)

Antwort bewerten Vielen Dank für Deine Bewertung

Und in dieser Zeile wo eben die zweite Abfrage sogesagt auf eine Variable gespeichert wird (...)

Diese Zeile:

$query02= "INSERT INTO tbAccounts (id,name) VALUES('$id','$name')";

?

Könntest du bitte einfach dein komplettes Skript formatiert posten (meinetwegen auf pastebin.com).

(...) kommt der Fehler ECONNRESET (...)

Da steht ganz sicher noch mehr.

Was bekommst du hier zurück?

mysqli_query($connection,$query01);
Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?