An error occurred substituting the named parameters ; Mixed named and positional parameters in エラーが出た時

An error occurred substituting the named parameters

PHPでSQL文を実行したときに、以上のようなエラーが出た。

こちらは、翻訳すると

名前付きパラメーターの置換中にエラーが発生しました

とのこと。

Mixed named and positional parameters

これも、パラメータの場所と名前が混在している。 みたいな感じ。

つまり、バインドした値の置き換え中のエラー

原因としては、コロンとハテナ?を両方使って、SQL文を書いていたため起こった。

どちらか一方を使いなさいということ。

両方バインド変数として使えるが、

今回やっていたことは、

カラムの列名をあらかじめ文字列として、変数に入れていた。

$columns = :カラム名1, :カラム名2,…… ;

SELECT  $columns FROM …….         というような感じ。

そのときに、コロンを含ませて、別の場所で、文字列検索やバインドで使おうとしていた。

フィールド参照かとも思ったが、OracleかAccessでしか使えない??

replaceでコロンを空白に置き換えて解決した。

bindValue()を使わなくても、コロンを認識するみたいですね。