これを使えば、エスケープ処理は不要だ。
http://www.ipa.go.jp/files/000024396.pdf

静的プレースホルダは情報処理技術者試験で問われるキーワードです。バインド機構や、プリペアドステートメントという言葉を使う場合もあります。Prepared Statementなので「用意された構文」です。用意された構文が変化することなく、入力された文字は文字列として理解されるので不正な文字を入れるという攻撃を防げます。

過去問(H18秋SU午後Ⅱ問1)では、「バインド機構を利用する」ことの解説として、「プレースホルダと呼ばれる一時的な特殊文字を使用してSQL文のひな形を用意しておき,後で実際の値(変数)を割り当ててSQL文を完成させる方法です。変数は自動的にエスケープ処理されるので,DBMSの種類によって異なるエスケープ処理を意識する必要がなくなります」とあります。

具体例をみましょう。以下は、上記サイトの引用であるが、入力されたデータは「?」で表わされます。そして、入力されたデータが文字として直接実行されるのだ。
$sth = $dbh->prepare(
"SELECT id, name, tel, address, mail FROM usr WHERE uid=? AND passwd=?");
$sth->execute($uid, $passwd);
1

わかったような…
これまでは、上記のuidのところに、以下のように入力されると、構文が変わってしまう。
1' or 'a'='a' --
 しかし、?で処理し、値だけを判断するので、 「1' or 'a'='a' --」という文字列で処理される。