質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

513閲覧

PDOを使ってのSQLの条件の書き方で条件を場合によって変更したい

kiyo_1106

総合スコア1

PDO

PDO(PHP Data Objects)はPHPのデータベース抽象化レイヤーです。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/07/12 08:05

前提・実現したいこと

PHPにてデータベースに登録されている情報を検索して表示させるというシステムを作っています。
検索条件にいくつかの項目があり、その項目は埋めたり埋めなかったり必須ではないものとします。
自分の考えとしては、条件文を変数として、条件の項目に値があればその変数を入れるというような仕組みにしようかと思っていました。

イメージのソースコード

//条件文の追加 if(!empty($_POST["keyword1"]){$w1 = "title LIKE :title";} if(!empty($_POST["keyword2"]){$w2 = "price >:price";} ... $where = "where". $w1 . $w2 . $w3 . $w4 ; ....PDOの記述割愛 $sql = "SELECT * FROM M_BOOK " . $where .";" ;

問題点

これだとandがないので構文エラーになると思いますが、どの項目が条件として指定されるかわからないのでandをどのように入れたらわかりません。
そもそもこの書き方が間違っている気がするので、PHPにて複数条件があるSQLを書こうとした場合の書き方を教えていただきたいです。

初めての質問なので、曖昧で失礼な書き方になっているかと思いますが、ご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

条件を配列に詰め込んでimplodeでandで結合(たぶんこの手のやり方は過去質問でも出てます)

投稿2021/07/12 08:18

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

たとえばこう

PHP

1<?PHP 2$title=filter_input(INPUT_POST,"keyword1"); 3$price=filter_input(INPUT_POST,"keyword2",FILTER_VALIDATE_INT); 4$sql="select * from tbl where 1 "; 5$data=[]; 6if(!empty($title)){ 7 $sql.=" and title=? "; 8 $data[]=$title; 9} 10if(!empty($price)){ 11 $sql.=" and price > ? "; 12 $data[]=$price; 13} 14print $sql.";<br>\n"; 15print_r($data); 16?> 17<form method="post"> 18タイトル:<input type="text" name="keyword1"><br> 19価格:<input type="text" name="keyword2">以上<br> 20<input type="submit" value="send"> 21</form>

投稿2021/07/12 08:16

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kiyo_1106

2021/07/12 08:22

where 1という記述についての知識がなかった為、大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問