2016-04-03 26 views
-1

私はRest APIを書いていますが、私はINSERT/UPDATE/DELETEというメソッドについては疑問があります。レストAPIにレコードが存在するかどうかを確認しますか?

endpoints/api/user/{id} 

今私の考えはとPDOの機能を拡張することによって、私が作成したレイヤーのすべてを置くために、次のようになります。特に、上記の方法のいずれかを実行する前に、私は、URIに渡されたレコードのように存在するかどうかを確認したいですこのような方法:

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

とバック適切trueまたはfalseレコードが見つからないか、されている場合。しかし、私はこの方法がsql injectionに対して安全かどうか疑問に思います。レコードを更新したり追加したりする前にレコードが存在するかどうかを確認する方法が他にもあるかどうかは疑問です。私のAPIは百モデルのようになると思いますので、どのモデルでも簡単に使用できる効率的なソリューションが必要です。

+0

がSQLクエリに直接ユーザー入力を渡すことはありません。準備されたステートメントを使用する。 –

+0

@RomanNazarkin Okと、メソッドがテーブルに存在するかどうかを確認するメソッドのヒント? – Dillinger

答えて

3

PDOクラスを独自の方法で拡張しないでください。それはYour first database wrapper's childhood diseasesを読んでください。

使用正常準備文のような固有IDの行を取得する:

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

提案に感謝します。私は独自の方法を削除しました。ただ一つのこと:私があなたの答えをよく理解すれば、私はそれが必要なところで各モデルをこのモデルで実行する必要があります。それはそうです? – Dillinger

関連する問題