前提・実現したいこと
簡単な検索機能を作成しています。名前検索処理のみ上手く動作しません。
一つのSQL文に同一の変数をプレースホルダを用いて複数代入したいです。
発生している問題・エラーメッセージ
Invalid parameter number in ...
(以下のコード内の)$info->execute()で不具合が起きています。
該当のソースコード
php
1$sql = 'concat(lastname, firstname) as name from info'; 2 3~中略(条件分岐)~ 4 5$sql = $sql.' where (lastname like :keyword 6 or firstname like :keyword 7 or firstkana like :keyword 8 or lastkana like :keyword)'; 9 10~中略(条件分岐)~ 11 12$info = $pdo->prepare($sql.';'); 13$info->bindValue(':keyword', '%'.$keyword.'%', PDO::PARAM_STR); 14$info->execute();
試したこと
カラム・プレースホルダの名前確認、テーブルの構造確認、bindParamでの実行
疑問符プレースホルダでは正常に動作しますが、同じ変数を代入しているだけなので、一括にできる方法はないかと考えています。
bindValueの数が間違っているというエラーだと考え、変数分(4つ)bindValueを入れてみたのですが、そうなると「値がありません」というエラーになってしまいます。
補足情報(FW/ツールのバージョンなど)
突然この処理ができなくなり困惑しています(直前までは正常に動いていた)。
動かなくなると前とで変更した箇所はデータベースなのですが、大きく構造を修正したわけではなく、カラム名も間違っていません。
名前以外の検索処理は問題なく動作します。
SQL文内の()は「名前が一致している”かつ”○○」という文法にするためのものです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/30 05:10