IT関連

Laravel SQLでWhereをIF文で追加したり外したりしたい

投稿日:2018年9月13日 更新日:

LaravelでSQL文を直で打ちたいときは、コントローラーの冒頭で

を宣言し、

 

こんな感じでSQL文を書く。

書籍を2つほど読んだがこんな感じだった。

 

 

例えばこんなときはどうだろう。

画面からリクエストでinputの値を受け取り、それをSQL文に噛ませている。

 

だがリクエストの値がブランクの場合は、条件に合致するわけがないので、WhereにあるDDDはそもそもSQL文に組み込みたくないというとき。

こんなの動くわけないのだが、一応やってみた。なぜならselect(“SQL文”)で一文だから。間にif文を噛ませると動かない。

 

クエリビルダやEloquentでは、->で組み立てていくとき、IF文を間に挟んで組まないようにすればいいのだが、どうしたものか。

 

別に難しく考える必要はなかった。

こうする。変数にSQL文を組み立てていき、最後にDB::select($SQL)とすればいい。

 

変なこと言ってるかもしれませんが、自分の備忘録なのでお許しを。他にいいやり方があれば教えてください。

あとこれをそのまま動かすと、見事にSQLインジェクションの餌食になります。

htmlspecialcharsなどでサニタイズは行ってください。

スポンサーリンク




スポンサーリンク




-IT関連
-, ,

執筆者:


  1. test says:

    そのやり方はSQLインジェクションが考慮されておらず、値がサニタイズされない

    • kouji says:

      ご指摘ありがとうございます。
      他のページには書いていたのですがセキュリティ系は考慮して書いておりません。
      ゆえにhtmlspecialcharsなどは通常よくあるh()などで関数化したりするので、
      わざわざhtmlspecialchars($keyword,ENT_QUOTES)と書いても恥ずかしいだけかなと思いまして・・。
      それをLaravel側の機能ので出来るのならぜひ教えて頂きたい次第です。
      とにかくサニタイズのことは注意書きで追記しておきます。コメント感謝です。

comment

Your email address will not be published. Required fields are marked *

関連記事

WordPress リカバリー まっさらにして戻ってこれたぜ

先日からブログをやっているが、投稿を重ねれば重ねるほど、ぶっ壊れたときに復旧できるのかが心配になってきた。さくらVPSは、サーバのSSDがぶっ壊れたがデータは知らんという事例があるようだ。ちゃんとバッ …

MySQLのrootパスワードを変更したらphpMyAdminに入れない

XAMPPとはいえ、MySQLのRootのパスワードは無防備すぎて変更したくなる衝動にかられるが、変更したらphpMyAdminに入れなくなったという話。 phpMyAdminはrootでログインして …

AS400/IBMi 無料で Web化 GUI化 オープン化 PHP/Laravel設定編 2/2

注意 これは私の環境下における私の備忘録です。お使いの環境によっては内容が異なる場合があります。私は何も責任を負いませんのでご了承のうえご覧ください。     前置き 設定編1/2 …

AS400/IBMi SFLDROPを最初からドロップ状態にする

最初からペロッとドロップしていて、コマンドキーを押せば収納したいとき。   F3キーで切り替えするとしたら、 SFLFOLD(CF03) とDDSに表記するだけです。これで最初がドロップ状態 …

AS400/IBMi どのライブラリにあるのか判らないファイルを探す

DSPFDのライブラリ指定を*ALLにすればいい。 全てのライブラリから探してくれる。   CREATE VIEWでビューを作ったが、ビュー名にライブラリを指定しなかったため、どこにファイル …

Adsense広告




文字で検索

人気記事

なぜだか人気記事

読んでほしい順に