MySQL テーブル ID を入力として受け取る関数があります。
mysql_real_escape_string を適用する代わりに、is_numeric を使用できますか?
そのようです:
protected function validId($id) {
if(!is_numeric($id)) return false;
// else do stuff
}
編集:
また、私は時々これを使用したことにも言及したかった:
$val = (int)$val;
PHP ドキュメントのタイプ キャストに関するセクションは次のとおりです。
また、mysql_real_escape_string を使用するたびにデータベースにアクセスする必要があると思います。整数を検証するときになぜそれを行うのですか?
編集2:
また、is_int() はフォーム入力では機能しないため、is_numeric を使用しています。しかし、おそらく次のようなことを行うと問題が解決し、より高速に動作し、サーバーの負荷が軽減されます。
protected function validId($id) {
if(!is_numeric($id)) return false; // confirm it is number or numeric string
$id = (int) $id; // cast to int (will chop off decimals I believe)
// do stuff
}