最近の、別の記事を探す
【タイトル】
PDO_MYSQLでInvalid parameter number
【キーワード】
MYSQL,PDO,Invalid parameter number,クォート,リテラル,union
【内容】
bindValueとexecuteの二つでInvalid parameter numberのエラーが出ました。
(1)bindValue
SQL中に :***(***は例)と書くべき所を ':***' と書いていました。''で囲むとリテラルになり、パラメタになってないので、(bindすべきパラメタがない)Invalid parameter numberとなりました。
(2)execute
同じ構造の複数テーブルからunionで検索するSQLを以下のように書いていました。
select ... where ... regdate = :date union ...where ... regdate = :date... (regdate,:dateは例)
推測ですが、bindValueは一つのパラメタしか置換しないので、後ろの:dateが残ったままexecuteを実行すると、Invalid parameter numberを出すようです。テーブルごとに:date*(*はテーブルごとにユニークになる値)にして解決出来ました。
更新日 2021-12-03