![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
MYSQLとPHPでアプリケーション作成している初心者です。
今まで一つ一つの項目をmysql_real_escape_stringに通していたのですが今日、array_mapという関数がある事を知りました。
今まで自分がやっていたように項目毎に
data1 = mysql_real_escape_string($_POST['data1']);
data2 = mysql_real_escape_string($_POST['data2']);
...(省略)
とするのは項目が増えれば増えただけ作業量も増えてしまうので
$postdata = array_map("エスケープ関数",$_POST);
としてPOSTされたデータは一括してエスケープ用関数を通そうかと思っています。
参考書などでこのような方法でエスケープ処理をしているのを見た事が無いの不安なのですが(googleで調べると結構やっている人がいました)、このやり方で何かデメリットはあるでしょうか?
No.2ベストアンサー
- 回答日時:
特にデメリットは無いと思いますが、処理不要な物も含めて$_POSTの中全部を処理してしまうということで、無駄な処理を避けたくて個別にやるんでしょう。
>とするのは項目が増えれば増えただけ作業量も増えてしまうので
人間の手間を減らすか、コンピュータの手間を減らすかの違い。
ちなみに、SQL処理で望ましいのは、自分で個別にescapeするんじゃなくて、PDOかPEAR::DBのprepareとexecuteを使ってescapeをライブラリに任せる方法だと思います。
お返事遅くなってすみません。
>人間の手間を減らすか、コンピュータの手間を減らすかの違い。
納得致しました。ありがとうございます。
>ちなみに、SQL処理で望ましいのは、自分で個別にescapeするんじゃなくて、PDOかPEAR::DBのprepareとexecuteを使ってescapeをライブラリに任せる方法だと思います。
PERAは便利だと良く聞くのですが、使った事が無く、折角なのでこの機会に色々調べてみようかと思います。
このような次につながるヒントを与えて頂けるのは凄くうれしいです。
お返事ありがとうございました。
No.1
- 回答日時:
> array_map("エスケープ関数",$_POST);
$_POSTデータを一律にarray_mapしてしまうと、エスケープ不要な
データもエスケープされますよね?
可読性は若干はよくなりますが結局フロー的に無駄は多いのでは?
それにある意味foreachループとも変わらないような気がしますし
お返事遅くなってすみません。
確かに処理しないデータまでエスケープしてしまいますね。
私が今やっているものは個人レベルで単純にフォームに入力された内容をINSERTやUPDATEするようなものなので便利だと思ったのですが、大規模なシステムになるとそのような無駄も大きく影響しそうですね。
やはり一つ一つ処理するクセをつける事にします。
お返事ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストボックスに入れた内容...
-
SQL文が実行できません
-
VBSの中で書くSQL文の記...
-
実行時エラー3131 FROM 句の構...
-
エラー3011
-
die と exit は何が違うので...
-
mysqlに接続が出来ません
-
データ入力条件
-
VBAをつかってクエリの情報を抽...
-
年月の情報だけを基に階層構造...
-
NASMアセンブラの特殊シンボル$...
-
見られたくないファイル
-
ACCESSを用いたデータベースで...
-
LocalのNotesメールDBをVBAで参...
-
MySQLでデータベースにデータin...
-
Pro*Cの構文エラー
-
<VB.NET>INSERT文でDBにデータ...
-
ResultSetインターフェイスでの...
-
データベースに存在するデータ...
-
PHPのSQL文のデバッグ方法とコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
SQL文が実行できません
-
テキストボックスに入れた内容...
-
in 'where clause'のエラーの理由
-
エラー3011
-
SQL文の実行に失敗しました???
-
LocalのNotesメールDBをVBAで参...
-
SELECT COUNTで取得した結果の表示
-
codeigniter 複数モデルでトラ...
-
PHP(PDO)でDBの情報を完全一...
-
Accessのテーブルへ複数の主キ...
-
phpのPEARのMDB2を使って出たエ...
-
ASPでRecordCountが使用でき...
-
Call to undefined method MDB2...
-
PHP4でのSmarty派生クラスの定...
-
zend(phpフレームワーク)でトラ...
-
データフォームウィザードで追...
-
DAOでデータベースを二つ開くに...
-
SQLiteでカラムを追加
おすすめ情報