親愛なるすべて。整数をサニタイズするときのintval&real_escape_stringの使用
私はmysqlデータベースのいくつかのテーブルで整数のPKを使用しています。 PHPスクリプトから入力する前に、私はintval($ id)と$ mysqli-> real_escape_string()を含むいくつかのサニタイズを行っています。 $のみINTVAL() 'EDであることSUPPLIER_IDながら
クエリはこの例では
insert into `tblproducts`(`supplier_id`,`description`) values('$supplier_id','$description')
非常に簡単です、$の説明は、real_escape_string()を通過します。
私はちょっと不思議ですが、状況がある場合、intvalとreal_escape_stringの両方を整数に適用する必要があるときにDBに挿入していますか?だから基本的に私は本当に使用する必要がありますか?
$supplier_id = intval($mysqli->real_escape_string($supplier_id));
ありがとうございます。
用意されたステートメントを利用する場合は、サニタイズとデータ型の保護に余計な労力を費やすことになります。とても簡単です。 – mario
ご意見ありがとうございます。もともと、DBクラスはprep文なしで開発されていたので、基礎クラスをリファクタリングし、同時に作業インフラストラクチャを破壊する必要はありません。だから、あなたが言及した理由のためにprep文に切り替えることを検討していますが、すぐにはありません:) – paulus
さらに、prep文は、私が知っている限り、一般的にはそうではありません私の状況。ですから、基本的にprep文に切り替えると、コードの量が大幅に減少することはありません。>したがって、可読性とパフォーマンスの低下も問題になります。私の意見では、prepare => bind => executeよりも、時折intおよびreal_escape_stringsを実行するほうが速くなります。私の場合、ゼロからコードを書き直すことを意味するすべてのクエリを処理する、ある種のスーパーメタDBクラスを開発しない限り。 – paulus