###前提・実現したいこと
PHP7(CodeIgniter3)で検索画面を作っています。
テーブルの結合が複雑で検索条件も多いため、
↓こういう書き方ではなく
$this->db->from('table1'); $this->db->where('id', 'user123');
↓こういう風に書こうとしています。
$_sql = "select * from table1 where id = ? "; $_binds = array('user123'); $this->db->query($_sql, $_binds)
ネットで調べると、SQL内の「?」で置き換えている箇所が、
JavaやRubyという言語では
select * from table1 where id = :id
のように、「:」+任意の名前でマーキングできるようでした。
PHP(CodeIgniter)では同じことはできないのでしょうか。
こうすればできるよ 等があれば教えてください!
###発生している問題・エラーメッセージ
検索条件が多いため「?」が大量になってしまい、
どこがなんの値で置き換えられているのか、非常に読みづらい。
###試したこと
$this->db->query()の本体と思しき、DB_driver.phpのqueryファンクションを読んでみました。
同じファイルの内のcompile_bindsファンクションが「?」の置き換え処理で、
マーカーとして「?」しか定義されてなかったので、queryファンクションではやりたいことは実現できないのではないかと思っています。
そこでMY_DB_driver.phpを作ってオリジナルのcompile_bindsファンクションを書いてみました。
$this->db->query()でオリジナルのcompile_bindsが呼び出されると思ったのですが、誰からも呼んでもらえませんでした。
回答1件
あなたの回答
tips
プレビュー