PDOStatement -> Invalid parameter number ind Abfrage – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self?srt=yes PDOStatement -> Invalid parameter number ind Abfrage Tue, 19 May 20 07:34:47 Z https://forum.selfhtml.org/self/2020/may/19/pdostatement-invalid-parameter-number-ind-abfrage/1770651?srt=yes#m1770651 https://forum.selfhtml.org/self/2020/may/19/pdostatement-invalid-parameter-number-ind-abfrage/1770651?srt=yes#m1770651 <p>Hallo,</p> <p>ich hoffe ich finden den ein oder anderen der mir helfen kann und will. Ihm gehört jetzt schon mein 10000facher Dank.</p> <p>ich bekomme folgende Fehlermeldung:</p> <p><strong>Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in 100</strong></p> <p>dort ist:</p> <p>$statement->execute(array('jahr_1' => 2020,'jahr_2' => 2021,'jahr_3' => 2022, 'id_user' =>100));</p> <p>Um den Fehler einzugrenzen habe ich meine SELECT Abfrage erst mal ohne die PDO Felder gemacht</p> <pre><code class="block language-php"> <span class="token variable">$statement</span> <span class="token operator">=</span> <span class="token variable">$pdo</span><span class="token operator">-></span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token string double-quoted-string">" 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 "</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token variable">$statement</span><span class="token operator">-></span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token keyword">array</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'jahr_1'</span> <span class="token operator">=></span> <span class="token number">2020</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'jahr_2'</span> <span class="token operator">=></span> <span class="token number">2021</span><span class="token punctuation">,</span><span class="token string single-quoted-string">'jahr_3'</span> <span class="token operator">=></span> <span class="token number">2022</span><span class="token punctuation">,</span> <span class="token string single-quoted-string">'id_user'</span> <span class="token operator">=></span><span class="token number">100</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> </code></pre> <p>Hier geht die Abfrage, auch wenn ich die PDO Felder nicht benutze.</p> <p>Wenn ich dann anfange die einzelnen Bereich mit den PDO Felder zu ersetze wie z.B. die 2020 gegen die jahr_2</p> <pre><code class="block language-sql"><span class="token keyword">LEFT</span> <span class="token keyword">JOIN</span> data_source a1 <span class="token keyword">ON</span> a1<span class="token punctuation">.</span>id_user<span class="token operator">=</span><span class="token number">8</span> <span class="token operator">AND</span> a1<span class="token punctuation">.</span>id_field<span class="token operator">=</span>a<span class="token punctuation">.</span>id <span class="token operator">AND</span> a1<span class="token punctuation">.</span>jahr <span class="token operator">=</span>:jahr_1 <span class="token keyword">LEFT</span> <span class="token keyword">JOIN</span> data_source a2 <span class="token keyword">ON</span> a2<span class="token punctuation">.</span>id_user<span class="token operator">=</span><span class="token number">8</span> <span class="token operator">AND</span> a2<span class="token punctuation">.</span>id_field<span class="token operator">=</span>a<span class="token punctuation">.</span>id <span class="token operator">AND</span> a2<span class="token punctuation">.</span>jahr <span class="token operator">=</span><span class="token number">2021</span> <span class="token keyword">LEFT</span> <span class="token keyword">JOIN</span> data_source a3 <span class="token keyword">ON</span> a3<span class="token punctuation">.</span>id_user<span class="token operator">=</span><span class="token number">8</span> <span class="token operator">AND</span> a3<span class="token punctuation">.</span>id_field<span class="token operator">=</span>a<span class="token punctuation">.</span>id <span class="token operator">AND</span> a3<span class="token punctuation">.</span>jahr <span class="token operator">=</span><span class="token number">2022</span> </code></pre> <p>bekomme ich folgende Meldung</p> <p>Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in 100</p> <p>Karl Heinz</p> <p>Tippfehler bitte grosszügig übersehen.</p> PDOStatement -> Invalid parameter number ind Abfrage Tue, 19 May 20 08:00:02 Z https://forum.selfhtml.org/self/2020/may/19/pdostatement-invalid-parameter-number-ind-abfrage/1770652?srt=yes#m1770652 https://forum.selfhtml.org/self/2020/may/19/pdostatement-invalid-parameter-number-ind-abfrage/1770652?srt=yes#m1770652 <p>Hallo,</p> <blockquote> <p>Wenn ich dann anfange die einzelnen Bereich mit den PDO Felder zu ersetze wie z.B. die 2020 gegen die jahr_2</p> </blockquote> <p>Wenn ich <a href="https://www.php.net/manual/en/pdostatement.execute.php" rel="nofollow noopener noreferrer">das Manual</a> 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…</p> <p>Gruß<br> Kalk</p> PDOStatement -> Invalid parameter number ind Abfrage Tue, 19 May 20 08:26:04 Z https://forum.selfhtml.org/self/2020/may/19/pdostatement-invalid-parameter-number-ind-abfrage/1770653?srt=yes#m1770653 https://forum.selfhtml.org/self/2020/may/19/pdostatement-invalid-parameter-number-ind-abfrage/1770653?srt=yes#m1770653 <p>Hey, das kann doch wohl nicht wahr sein. Da habe ich Stunden drüber gesessen, und überall hats funktioniert.... und dann das...</p> <p>so eine verdammte (sagt man nicht) kleinigkeit....</p> <p>Danke, für das Augen öffnen.</p> <p>Karl Heinz (2)</p>