SQLインジェクション防止をしないといけないのですが、
普段、便利なのでPearを使ってます。
公式サイト
http://pear.php.net/manual/ja/package.database.db.db-common.quotesmart.php
//接続方法
$con = "mysql://DBID:DB_PASS@DB_SERVER/DB_NAME";
$opt = array(
'debug' => 2,
'portability' => DB_PORTABILITY_ALL,
);
$db =& DB::connect($con, $opt);
if (DB::isError($db)) {
die($db->getMessage());
}
//$dbオブジェクトができて、quoteSmartでSQLインジェクション防止
$sql = "SELECT * FROM hogehoge WHERE name = ".$db->quoteSmart($name);
$res =& $db->query($sql);
という感じです。
これだと、$con = "mysql の部分をpgsqlとか変更するだけで、PostgreSQLとか
色々使えてさすが便利です。
ところがキーワード検索する際には LIKEを使いたくなる時があります。
その場合Pearだと LIKE ".$db->quoteSmart("%".$name."%");
としても%も文字列として扱われてうまくいきません。
その際は、LIKE 'mysql_real_escape_string("%".$name."%")'
という感じにしてます。これだと、%をエスケープしません。
どういう処理をしてるのか全部は分からないですが、関数名を見てもMySQLにこれを使えば大丈夫でしょう。
PHPは便利な関数が沢山あって嬉しいです。