PDOStatement -> Invalid parameter number ind Abfrage
Karl Heinz der zweite
- mysql
- pdo
Hallo,
ich hoffe ich finden den ein oder anderen der mir helfen kann und will. Ihm gehört jetzt schon mein 10000facher Dank.
ich bekomme folgende Fehlermeldung:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in 100
dort ist:
$statement->execute(array('jahr_1' => 2020,'jahr_2' => 2021,'jahr_3' => 2022, 'id_user' =>100));
Um den Fehler einzugrenzen habe ich meine SELECT Abfrage erst mal ohne die PDO Felder gemacht
$statement = $pdo->prepare("
SELECT
a.titel,
a.id,
a1.id_user AS id_user,
a1.jahr AS jahr_1,a1.total AS total_1,
a2.jahr AS jahr_2,a2.total AS total_2,
a3.jahr AS jahr_3,a3.total AS total_3
FROM data_field a
LEFT JOIN data_source a1 ON a1.id_user=8 AND a1.id_field=a.id AND a1.jahr =2020
LEFT JOIN data_source a2 ON a2.id_user=8 AND a2.id_field=a.id AND a2.jahr =2021
LEFT JOIN data_source a3 ON a3.id_user=8 AND a3.id_field=a.id AND a3.jahr =2022
");
$statement->execute(array('jahr_1' => 2020,'jahr_2' => 2021,'jahr_3' => 2022, 'id_user' =>100));
Hier geht die Abfrage, auch wenn ich die PDO Felder nicht benutze.
Wenn ich dann anfange die einzelnen Bereich mit den PDO Felder zu ersetze wie z.B. die 2020 gegen die jahr_2
LEFT JOIN data_source a1 ON a1.id_user=8 AND a1.id_field=a.id AND a1.jahr =:jahr_1
LEFT JOIN data_source a2 ON a2.id_user=8 AND a2.id_field=a.id AND a2.jahr =2021
LEFT JOIN data_source a3 ON a3.id_user=8 AND a3.id_field=a.id AND a3.jahr =2022
bekomme ich folgende Meldung
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in 100
Karl Heinz
Tippfehler bitte grosszügig übersehen.
Hallo,
Wenn ich dann anfange die einzelnen Bereich mit den PDO Felder zu ersetze wie z.B. die 2020 gegen die jahr_2
Wenn ich das Manual richtig interpretiere, kannst du nicht damit anfangen, erstmal eine Variable aus dem Array zu nehmen, sondern musst alle, in deinem Fall 4, Variablen im Array exekutieren…
Gruß
Kalk
Hey, das kann doch wohl nicht wahr sein. Da habe ich Stunden drüber gesessen, und überall hats funktioniert.... und dann das...
so eine verdammte (sagt man nicht) kleinigkeit....
Danke, für das Augen öffnen.
Karl Heinz (2)