PDOを利用する場合、バインド変数を利用すればSQLインジェクションが防げる。

$sql = "select * from sample_t where col = :col";
$con = new PDO(PDO_DSN, PDO_USER, PDO_PASS);
$stmt = $con->prepare($sql);
$stmt->bindValue(':col', $col, PDO::PARAM_STR);
$stmt->fetch(PDO::FETCH_ASSOC);

しかし、LIKE句を利用する場合、"%""_"のエスケープはしてくれない。
"#"をエスケープ句にする独自関数ESCAPEを定義する。

/**
* LIKE句のエスケープ用
* ESCAPE句の指定すること。
* ESCAPE句の値は'#'で。
*/
function escape_wildcard($s) {
    return mb_ereg_replace('([_%#])', '#\1', $s);
}

$col = escape_wildcard($col);
$col = '%' . $col;
$sql = "select * from sample_t where col like :col ESCAPE '#'";
$stmt->bindValue(':col', $col, PDO::PARAM_STR);
$stmt->fetchAll(PDO::FETCH_ASSOC);