Non usando i named paramenter, l'array che passi alla execute non deve essere associativo
ES:
Codice PHP:
$s $pdo->prepare("INSERT ... VALUES (?,?)");
$->
execute([1,2]); 
Se usi i named invece devi usare un array associativo con le chiavi che corrispondo

Codice PHP:
$s $pdo->prepare("INSERT ... VALUES (:par1, :par2)");
$->
execute([':par1' => 1,':par2'=> 2]);