Kewitschka
Kewitschka

Reputation: 1661

PHP PDO: Invalid parameter number

$emptyNumbers has 2 items and $qMarks is " ?,? ". What is the problem?

if(($key = array_search($row['nummer'], $emptyNumbers)) !== false) {
unset($emptyNumbers[$key]);
}
echo sizeof($emptyNumbers)."==>".$qMarks;  // 2 ==> ?,?
$qMarks = str_repeat('?,', count($emptyNumbers)-1) . '?';
$getPlayerData=$db->prepare( "SELECT number,surname,firstname,position,job FROM player WHERE nummer IN ($qMarks)");         
$getPlayerData->execute($emptyNumbers);

--> Error: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Upvotes: 0

Views: 32

Answers (1)

Kewitschka
Kewitschka

Reputation: 1661

The problem was that I previously unset values from $emptyNumbers and I did not reorder the array so that there were empty values.

if(($key = array_search($row['nummer'], $emptyNumbers)) !== false) {
unset($emptyNumbers[$key]);
//delete the gaps in the array!
$emptyNumbers = array_values($emptyNumbers);
}

$qMarks = str_repeat('?,', count($emptyNumbers)-1) . '?';
$getPlayerData=$db->prepare( "SELECT number,surname,firstname,position,job FROM player WHERE nummer IN ($qMarks)");         
$getPlayerData->execute($emptyNumbers);

Upvotes: 1

Related Questions