Utilizzo la classe PDO in una semplicissima funzione prototipo per eseguire le query.

Funziona tutto correttamente ma per qualche motivo sia utilizzando il bind che l'execute mi da errore in presenza di valori da inserire in vui vi siano ' o ".

codice:
function doquery($fquery,$farray=null) {  try {
    if (!isset($pdo)) {
      $pdo = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=utf8",DB_USER,DB_PASS);
      $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
    }
    
    $fstmt = $pdo->prepare($fquery);
    if ($farray) {
//      foreach ($farray as $key => &$val) { // tolto per provare l'execute diretto con array
//        $fstmt -> bindParam($key, $val);
//        }
      $is_ok = $fstmt->execute($farray);
    } else {
      $is_ok = $fstmt -> execute();
    }


    if ($is_ok) {
      if (strstr($fquery,"SELECT")) {
        $value = $fstmt -> fetchAll(PDO::FETCH_ASSOC);
      } else {
        $value = $fstmt -> rowCount();
      }
    } else {
      $value = NULL;
    }
    $fstmt = NULL;
       
    return $value;
  } catch (PDOException $e) {
    echo $fquery."\n";
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
  }
}
Dal manuale PH si evice che gli escape e i controlli anti SQLInjection vengono svolti direttamente dalla classe PDO ... cosi' non par essere.
Ho provato anche con la quote del PDStatment ma non funziona ...

Possibili altre soluzioni?