*http://qiita.com/tabo_purify/items/df8f2aa17094b1a60c82
こちらのサイトの、ひらがな、カタカナ、漢字を許可のpreg_matchを使うのが一般的に日本語のインジェクション対策になりますでしょうか。
http://www.ipa.go.jp/files/000017320.pdf
上記項番5.3にあるようなプレースホルダを使うのが一般的な方法だと思います。
これは、PHPに限らずたいていの言語においてSQLインジェクション対策で推奨される方法です。
『PHPとセキュリティの解説書12種類を読んでSQLエスケープの解説状況を調べてみた | 徳丸浩の日記』によると、『基礎からのPHP』には、プレースホルダの説明があるそうなので、確認してください。
他のSQLインジェクション対策には、インジェクションに使える文字をエスケープする方法がありますが、考慮漏れが発生しやすいのでお勧めできません。
トリビア:「大垣さん、自分のしたことを分かっていますか?」 - Togetterまとめ
また、住所をDBに蓄積するなら、住所コードの利用も検討してください。
公益財団法人国土地理協会 -住所マスター-
$db = new PDO("mysql:host=localhost;dbname=db", "root", "1234");
$ps = $db->prepare("SELECT * FROM tb2 WHERE ban=:A");
$ps->bindParam(":A", $a);
パラメータクエリを使用する場合は、この場所では「SQLインジェクション」関係の処理は必要ないです。
パラメータクエリを使わずに、SQL文を文字列で組み立てる場合に、
’
”
;
変数内に、この手の文字などが使われてると、別のSQLにすることが可能なので、その対策などをしないとダメだというのが、SQLインジェクションです。