As already pointed out by some folks, DON'T PASS ARRAYS KEYED WITH NAMES TO QUESTION MARK PARAMETERS!
<?php
$sth = $dbh->prepare('INSERT INTO fruit (name, colour, colories) VALUES (?, ?, ?)');
// This is wrong!
// $param = array("name" => "apple", "colour" => "red", "colories" => 150);
// Array must be keyed with integers starting from zero
$param = array("apple", "red", 150);
$sth->execute($param);