質問: :id ``` のように、「:」+任意の名前でマーキングできるようでした。 PHP(CodeIgniter)では同じことはできないのでしょうか。 こうすればできるよ 等があれば教えてください! ### 発生している問題・エラーメッセージ 検索条件が多いため「?」が大量になってしまい、 どこがなんの値で置き換えられているのか、非常に読みづらい。 ### 試したこと $this->db->query()の本体と思しき、DB_driver.phpのqueryファンクションを読んでみました。 同じファイルの内のcompile_bindsファンクションが「?」の置き換え処理で、 マーカーとして「?」しか定義されてなかったので、queryファンクションではやりたいことは実現できないのではないかと思っています。 そこでMY_DB_driver.phpを作ってオリジナルのcompile_bindsファンクションを書いてみました。 $this->db->query()でオリジナルのcompile_bindsが呼び出されると思ったのですが、誰からも呼んでもらえませんでした。
回答: 普通に sql 文作って、配列なりオブジェクトで値を渡してあげれば出来たはずです。 ただ、普通のPHPとは違い ``` $_sql = "select * from table1 where id = :id "; $array = [ 'id' => $id, ]; ``` のように`:`を取った形で、作ってやる必要があったと思います。 *手元で確認してません^^;間違ってたらすみません。 また、CodeIgniter は制約が緩いので、ナマの PHP が使えます。 クエリビルダを使うのがしんどければ、PDO とかでやるとイイです。 PDO::prepare やりたいことは普通に実現可能です。 拡張に関しては、こちらが参考になるかと あずみ.net