Чтобы избежать необходимости собственного экранирования, экранирование должно быть частью данных, которые защищает pdo, а именно связанных аргументов. Он не защищает вас от чего-либо в жестко закодированном запросе.
$sql = "SELECT count(*) ".
"FROM avs_souscript ".
"WHERE num_certif =\"\" ".
"AND date_annul=\"\" ".
"AND user=:sess_user ".
"AND user!=\"\" ".
"AND num_certif LIKE :num_certif_search";
$valeur = 'azert'; //I assume this actually came from some user input
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':num_certif_search', '%'.$valeur.'%');
(или альтернативно вы можете поместить их в присваивание $valuer = "%{$userInput}%";
, так или иначе, они должны быть в связанном аргументе, а не в sql.
Перемещение этого фрагмента глупой строки concat из sql в php также является хорошей практикой для создания масштабируемого приложения. Масштабировать ферму веб-серверов гораздо проще, чем масштабировать сервер базы данных.