2016-04-03 21 views
-1

Ich schreibe meine Rest API, und ich habe Zweifel bezüglich der Methoden von INSERT/UPDATE/DELETE. Insbesondere vor einer des oben genannten Verfahren durchzuführen ich, wenn der Datensatz in der URI weitergegeben überprüfen möge existiert als:Prüfen, ob der Datensatz in der Rest-API existiert?

endpoints/api/user/{id} 

jetzt wäre meine Idee, alles in der Schicht zu platzieren, dass ich durch die Erweiterung der PDO-Funktionen erstellt mit ein solches Verfahren:

public function getWhere($table, $where) 
{ 
    return $this->exec("SELECT * FROM $table WHERE $where"); 
} 

und zurück in geeigneter Weise true oder false, wenn der Datensatz gefunden wurde oder nicht. Aber ich frage mich, ob diese Methode gegen sql injection sicher ist. Ich frage mich auch, ob es eine andere Möglichkeit gibt zu sehen, ob der Datensatz existiert, bevor Sie ihn aktualisieren oder hinzufügen. Ich denke, dass meine API so etwas wie hundert Modelle werden wird, also brauche ich eine effiziente Lösung, die in jedem Modell mit Leichtigkeit verwendet werden kann.

+0

niemals Benutzereingaben direkt an SQL-Abfrage übergeben. Verwenden Sie vorbereitete Anweisungen. –

+0

@RomanNazarkin Ok, und andere Hinweise für die Methode, die überprüfen, ob die Methode in der Tabelle existiert? – Dillinger

Antwort

3

Erweitern Sie nicht die PDO-Klassen mit Ihren eigenen Methoden und denken Sie, dass es hilft. Es nicht, bitte lesen Sie Your first database wrapper's childhood diseases.

Verwenden Sie normale vorbereitete Anweisungen eine Zeile für eine bestimmte ID erhalten wie:

$stmt = $dbh->prepare('SELECT columns FROM users WHERE id = ?'); 
/* work with $stmt */ 
+0

danke für den Vorschlag. Ich habe die eigene Methode entfernt, nur eines: Wenn ich deine Antwort gut verstehe, muss ich in jedem Modell diese Methode ausführen, wo ich sie brauche. Es ist richtig? – Dillinger

Verwandte Themen