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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

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

Q&A

解決済

2回答

6319閲覧

検索結果ページのnullの場合の条件分岐について

退会済みユーザー

退会済みユーザー

総合スコア0

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

PHP

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

0グッド

0クリップ

投稿2017/10/15 13:55

編集2017/10/17 13:02

勤務地等何かを選択すると、
検索結果が表示されるのですが、全件表示がうまくいきません。

**問題:**何も選択せずに検索ボタンを押すと、
0件と表示される。

試した方法
●$_POSTが空の場合とそうじゃない場合のif文
if ( $_POST !=="" ){
●$_POSTがnullの場合とそうじゃない場合のif文
if ( $_POST ==null ){
●$_POSTがFALSEの場合とそうじゃない場合のif文
if ( $_POST ==FALSE ){

問題が発生しているソース:

php

1if ( $_POST !=="" ){ 2 $sql = 'SELECT '. 3' kyujin.id, jikyu, work_type, gyoukai, keisai_start, keisai_end, job_type.job_type, area.area'. 4' FROM kyujin LEFT JOIN job_type '. 5' ON kyujin.job_type=job_type.id '. 6' LEFT JOIN area '. 7' ON kyujin.area = area.id '. 8' where kyujin.area = ? AND ( kyujin.job_type=? OR jikyu>=? OR work_type=? OR gyoukai=?)'; 9} 10if ( $_POST =="" ){ 11$sql = 'select * from kyujin'; 12} 13

◆実現したいこと、
何も選択せずに、検索ボタンを押した際に、
全ての求人検索結果が表示されるようにしたい。

下記は、全文となります。

php

1<html lang="ja"> 2<head> 3<meta charset="utf-8"> 4</head> 5<body> 6<?php 7require_once "../common_function.php"; 8 9try{ 10 11 $pdo = new PDO('sqlite:../haken.db'); 12 13 14$todofuken = $_POST["todofuken1"]; 15 16 //職種 17$syokushu = $_POST["SHOKUSHU_CD"]; 18 19 //時給 20$jikyu = $_POST["PAY_START"]; 21 22 //フリーキーワード 23$keyword = $_POST["FREE_KEYWORD"]; 24 25 //働き方 26$tokucyo = $_POST["TOKUCYO"]; 27 28 //業界 29$gyoukai = $_POST["GYOUKAI"]; 30 31 32if ( $_POST !=="" ){ 33 $sql = 'SELECT '. 34' kyujin.id, jikyu, work_type, gyoukai, keisai_start, keisai_end, job_type.job_type, area.area'. 35' FROM kyujin LEFT JOIN job_type '. 36' ON kyujin.job_type=job_type.id '. 37' LEFT JOIN area '. 38' ON kyujin.area = area.id '. 39' where kyujin.area = ? AND ( kyujin.job_type=? OR jikyu>=? OR work_type=? OR gyoukai=?)'; 40} 41if ( $_POST =="" ){ 42$sql = 'select * from kyujin'; 43} 44 45 46 // $sql= 'select * from kyujin where jikyu=?'; 47 // sqlの準備 48 $stmt = $pdo -> prepare($sql); 49 //データを?に入れることをbindという bindは危険なコードを無害化する 50 $stmt->bindParam(1, $todofuken , PDO::PARAM_INT); 51 $stmt->bindParam(2, $syokushu[0] , PDO::PARAM_INT); 52 $stmt->bindParam(3, $jikyu , PDO::PARAM_INT); 53 $stmt->bindParam(4, $tokucyo , PDO::PARAM_STR); 54 $stmt->bindParam(5, $gyoukai , PDO::PARAM_STR); 55 $stmt->execute(); 56 $result = $stmt->fetchAll(); 57 58 59 // $resultは配列の配列 60 // fetchallは 61 62 63 echo '<html lang="ja">'; 64 echo '<head><meta charset="utf-8"></head>'; 65 echo '<body><div class="kensaku table_block">'; 66 echo '<h2 class="center">検索結果は'.count($result).'件です。</h2>'; 67 // $valueは配列 68 // $keyと$valueは空のものを使用する 69 foreach ($result as $key => $value ) { 70echo '<table>'; 71echo '<tr><th>職種</th><td>'; 72 hyouji( $value['job_type']); 73echo '</td></tr>'; 74echo '<tr><th>時給</th><td>'; 75 hyouji($value['jikyu']); 76 echo '</td></tr>'; 77 echo '<tr><th>業界</th><td>'; 78 hyouji( $value['gyoukai']); 79echo '</td></tr>'; 80echo '<tr><th>勤務地</th><td>'; 81 hyouji( $value['area']); 82echo '</td></tr>'; 83echo '</table>'; 84 } 85 86echo '</div>'; 87 echo '</body>'; 88 echo '</html>'; 89// // 実際に入れたいデータを配列に格納する 90// $bind = array('オフィスワーク','アパレル',1100); 91 92// $bind[1]; ➡アパレル 93 94/* $bind = array(); 95 $bind[0] = 'オフィスワーク'; 96 $bind[1] = 'アパレル'; 97 $bind[2] = '1200';*/ 98 99 // pdoのprepareメソッドに引数としてsqlを渡す 100 /* $stmt = $pdo->prepare($sql);*/ 101 102 // $job_type = '電気'; 103 // $gyoukai = 'メーカー'; 104 // $jikyu = 2600; 105 106 // $jikyu = 1300; 107 // $id = 4; 108 109 /* $stmt->bindParam(1, $jikyu, PDO::PARAM_INT); //文字列型PDO::PARAM_STR 110 $stmt->bindParam(2, $id, PDO::PARAM_INT);*/ 111 // $stmt->bindParam(3, $jikyu, PDO::PARAM_INT); 112 113 // stmtオブジェクトにデータを渡す execueは実行という意味 114/* $stmt->execute(); 115 $result = $stmt->fetchAll(); 116 117 // 118 foreach ($result as $key => $value ) { 119 hyouji( $value['id'] . "職種:". $value['job_type'] . "時給:". $value['jikyu'] 120 . "業界:". $value['gyouka']); 121 } 122 123 124 hyouji('データを表示する');*/ 125 126} catch(Exception $e){ 127 // エラーが発生したら即座にこのブロックに移る 128 echo $e->getMessage() . "<br>\n"; 129 // 'ただの文字列' "改行とか/n 変数とか解釈される" 130} 131 132 133 134 135 136?> 137 138</body> 139</html>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/10/15 14:10

SQLだけ見せられても回答できません。テーブルの定義や、サンプルデータを提示してください。
m.ts10806

2017/10/19 21:50

回答者の回答をヒントに自分できちんと考えてやっていかないといつまでたっても解決しないように思います。
guest

回答2

0

ベストアンサー

ANDとORが複雑にからむ検索は条件をよく考えて設計して下さい
ざっと見てみましたがこんな感じになるかと思います。

PHP

1$todofuken1=filter_input(INPUT_POST,"todofuken1"); 2$job_type=filter_input(INPUT_POST,"SHOKUSHU_CD",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]); 3$jikyu=filter_input(INPUT_POST,"PAY_START",FILTER_VALIDATE_INT); 4$work_type=filter_input(INPUT_POST,"TOKUCYO",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]); 5$gyoukai=filter_input(INPUT_POST,"GYOUKAI",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]); 6 7$data=[]; 8 9 10$sql ="SELECT * "; 11$sql.=" FROM kyujin "; 12$sql.="LEFT JOIN job_type "; 13$sql.=" ON kyujin.job_type=job_type.id "; 14$sql.=" LEFT JOIN area "; 15$sql.=" ON kyujin.area = area.id "; 16$sql.=" where 1 "; 17 18$flg[0]=(!is_null($todofuken1) and $todofuken1!==""); 19$flg[1]=count($job_type)>0; 20$flg[2]=$jikyu>0; 21$flg[3]=count($work_type)>0; 22$flg[4]=count($gyoukai)>0; 23 24if($flg[0]){ 25 $sql.="AND kyujin.area = ? "; 26 $data[]=$todofuken1; 27} 28if($flg[1] or $flg[2] or $flg[3] or $flg[4]){ 29 $sql.="AND ( 0 "; 30 if($flg[1]){ 31 $sql.="OR kyujin.job_type IN (".implode(",",array_fill(0,count($job_type),"?")).") "; 32 $data=array_merge($data,$job_type); 33 } 34 if($flg[2]){ 35 $sql.="OR jikyu>=? "; 36 $data[]=$jikyu; 37 } 38 if($flg[3]){ 39 $sql.="OR work_type IN (".implode(",",array_fill(0,count($work_type),"?")).") "; 40 $data=array_merge($data,$work_type); /*記載ミス訂正*/ 41 } 42 if($flg[4]){ 43 $sql.="OR gyoukai IN (".implode(",",array_fill(0,count($gyoukai),"?")).") "; 44 $data=array_merge($data,$gyoukai); /*記載ミス訂正*/ 45 } 46 $sql.=") "; 47} 48 49if(!in_array(true,$flg)){ 50 $sql.="AND 0 "; 51} 52 53print $sql; 54print "<hr>"; 55print_r($data); 56/* 57 $stmt = $pdo->prepare($sql); 58 $stmt->execute([]); 59*/

HTML

1<form method="POST"> 2<table> 3<tbody> 4<tr> 5<th>勤務地を指定</th> 6<td> 7<select name="todofuken1" id="todofuken1"> 8<option value="">都道府県を選択</option> 9<option value="13">東京都</option> 10<option value="14">神奈川県</option> 11<option value="15">埼玉県</option> 12<option value="16">千葉県</option> 13</select> 14</td> 15</tr> 16<tr><th>職種を指定</th> 17<td> 18<div class="three_line clear"> 19<input type="checkbox" name="SHOKUSHU_CD[]" value="1" id="shokushuLoop1"> 20<label for="shokushuLoop1">オフィスワーク・事務</label> 21<input type="checkbox" name="SHOKUSHU_CD[]" value="2" id="shokushuLoop2"> 22<label for="shokushuLoop2">営業・販売・サービス</label> 23<input type="checkbox" name="SHOKUSHU_CD[]" value="3" id="shokushuLoop3"> 24<label for="shokushuLoop3">Web・クリエイティブ</label> 25</div> 26</td> 27</tr> 28<tr><th>時給を指定</th> 29<td> 30<input type="text" class="text_input_s" name="PAY_START" maxlength="8" size="8" value="" style="ime-mode:disabled">&nbsp;円以上? 31</td> 32</tr> 33<tr><th>キーワードを指定</th><td><input type="text" class="text_input_l" name="FREE_KEYWORD" maxlength="30" size="20" value="" style="ime-mode:active" placeholder="キーワードを入力してください。"></td></tr> 34<tr> 35<th>こだわり条件を指定</th> 36<td> 37<div class="accordion_block"> 38<h2 style="background-image: url(&quot;../../img/common/icon_arrow_up01.png&quot;);">働き方・特徴</h2> 39<div class="accordion_box three_line clearfix" style="display: block;"> 40<input type="checkbox" name="TOKUCYO[]" value="紹介予定派遣" id="tokucyoLoop1101"><label for="tokucyoLoop1101">紹介予定派遣</label> 41<input type="checkbox" name="TOKUCYO[]" value="1日7時間未満" id="tokucyoLoop1102"><label for="tokucyoLoop1102">1日7時間未満</label> 42</div> 43</div> 44<div class="accordion_block"> 45<h2 style="background-image: url(&quot;../../img/common/icon_arrow_up01.png&quot;);">業界</h2> 46<div class="accordion_box three_line clearfix" style="display: block;"> 47<input type="checkbox" name="GYOUKAI[]" value="マスコミ関連" id="tokucyoLoop3301"><label for="tokucyoLoop3301">マスコミ関連</label> 48<input type="checkbox" name="GYOUKAI[]" value="金融関連" id="tokucyoLoop3302"><label for="tokucyoLoop3302">金融関連</label> 49<input type="checkbox" name="GYOUKAI[]" value="流通・サービス関連" id="tokucyoLoop3303"><label for="tokucyoLoop3303">流通・サービス関連</label> 50<input type="checkbox" name="GYOUKAI[]" value="IT・Web関連" id="tokucyoLoop3304"><label for="tokucyoLoop3304">IT・Web関連</label> 51</div> 52</div> 53</td> 54</tr> 55</tbody> 56</table> 57<p class="center"><input type="submit" value="この条件で検索する"></p> 58</form> 59

※一部記載ミスを訂正しました

より標準SQLらしく

1や0で処理していたものをvariantに変えました
またINをORの羅列に変えました

※テストのため、以下のソースを適当な名前のphpに保存して実行して下さい

PHP

1<?PHP 2$todofuken1=filter_input(INPUT_POST,"todofuken1"); 3$job_type=filter_input(INPUT_POST,"SHOKUSHU_CD",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]); 4$jikyu=filter_input(INPUT_POST,"PAY_START",FILTER_VALIDATE_INT); 5$work_type=filter_input(INPUT_POST,"TOKUCYO",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]); 6$gyoukai=filter_input(INPUT_POST,"GYOUKAI",FILTER_DEFAULT,["options"=>["default"=>[]],"flags"=>FILTER_REQUIRE_ARRAY]); 7 8$data=[]; 9 10 11$sql ="SELECT * "; 12$sql.=" FROM kyujin "; 13$sql.="LEFT JOIN job_type "; 14$sql.=" ON kyujin.job_type=job_type.id "; 15$sql.=" LEFT JOIN area "; 16$sql.=" ON kyujin.area = area.id "; 17$sql.=" where true "; 18 19$flg[0]=(!is_null($todofuken1) and $todofuken1!==""); 20$flg[1]=count($job_type)>0; 21$flg[2]=$jikyu>0; 22$flg[3]=count($work_type)>0; 23$flg[4]=count($gyoukai)>0; 24 25if($flg[0]){ 26 $sql.="AND kyujin.area = ? "; 27 $data[]=$todofuken1; 28} 29if($flg[1] or $flg[2] or $flg[3] or $flg[4]){ 30 $sql.="AND ( false "; 31 if($flg[1]){ 32 foreach($job_type as $val){ 33 $sql.="OR kyujin.job_type = ? "; 34 $data[]=$val; 35 } 36 } 37 if($flg[2]){ 38 $sql.="OR jikyu>=? "; 39 $data[]=$jikyu; 40 } 41 if($flg[3]){ 42 foreach($work_type as $val){ 43 $sql.="OR work_type = ? "; 44 $data[]=$val; 45 } 46 } 47 if($flg[4]){ 48 foreach($gyoukai as $val){ 49 $sql.="OR gyoukai = ? "; 50 $data[]=$val; 51 } 52 } 53 $sql.=") "; 54} 55 56if(!in_array(true,$flg)){ 57 $sql.="AND false "; 58} 59 60print $sql; 61print "<hr>"; 62print_r($data); 63/* 64 $stmt = $pdo->prepare($sql); 65 $stmt->execute($data); 66*/ 67?> 68<form method="POST"> 69<table> 70<tbody> 71<tr> 72<th>勤務地を指定</th> 73<td> 74<select name="todofuken1" id="todofuken1"> 75<option value="">都道府県を選択</option> 76<option value="13">東京都</option> 77<option value="14">神奈川県</option> 78<option value="15">埼玉県</option> 79<option value="16">千葉県</option> 80</select> 81</td> 82</tr> 83<tr><th>職種を指定</th> 84<td> 85<div class="three_line clear"> 86<input type="checkbox" name="SHOKUSHU_CD[]" value="1" id="shokushuLoop1"> 87<label for="shokushuLoop1">オフィスワーク・事務</label> 88<input type="checkbox" name="SHOKUSHU_CD[]" value="2" id="shokushuLoop2"> 89<label for="shokushuLoop2">営業・販売・サービス</label> 90<input type="checkbox" name="SHOKUSHU_CD[]" value="3" id="shokushuLoop3"> 91<label for="shokushuLoop3">Web・クリエイティブ</label> 92</div> 93</td> 94</tr> 95<tr><th>時給を指定</th> 96<td> 97<input type="text" class="text_input_s" name="PAY_START" maxlength="8" size="8" value="" style="ime-mode:disabled">&nbsp;円以上? 98</td> 99</tr> 100<tr><th>キーワードを指定</th><td><input type="text" class="text_input_l" name="FREE_KEYWORD" maxlength="30" size="20" value="" style="ime-mode:active" placeholder="キーワードを入力してください。"></td></tr> 101<tr> 102<th>こだわり条件を指定</th> 103<td> 104<div class="accordion_block"> 105<h2 style="background-image: url(&quot;../../img/common/icon_arrow_up01.png&quot;);">働き方・特徴</h2> 106<div class="accordion_box three_line clearfix" style="display: block;"> 107<input type="checkbox" name="TOKUCYO[]" value="紹介予定派遣" id="tokucyoLoop1101"><label for="tokucyoLoop1101">紹介予定派遣</label> 108<input type="checkbox" name="TOKUCYO[]" value="1日7時間未満" id="tokucyoLoop1102"><label for="tokucyoLoop1102">1日7時間未満</label> 109</div> 110</div> 111<div class="accordion_block"> 112<h2 style="background-image: url(&quot;../../img/common/icon_arrow_up01.png&quot;);">業界</h2> 113<div class="accordion_box three_line clearfix" style="display: block;"> 114<input type="checkbox" name="GYOUKAI[]" value="マスコミ関連" id="tokucyoLoop3301"><label for="tokucyoLoop3301">マスコミ関連</label> 115<input type="checkbox" name="GYOUKAI[]" value="金融関連" id="tokucyoLoop3302"><label for="tokucyoLoop3302">金融関連</label> 116<input type="checkbox" name="GYOUKAI[]" value="流通・サービス関連" id="tokucyoLoop3303"><label for="tokucyoLoop3303">流通・サービス関連</label> 117<input type="checkbox" name="GYOUKAI[]" value="IT・Web関連" id="tokucyoLoop3304"><label for="tokucyoLoop3304">IT・Web関連</label> 118</div> 119</div> 120</td> 121</tr> 122</tbody> 123</table> 124<p class="center"><input type="submit" value="この条件で検索する"></p> 125</form> 126

投稿2017/10/16 01:09

編集2017/10/16 14:28
yambejp

総合スコア114814

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

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

退会済みユーザー

退会済みユーザー

2017/10/16 03:44

ありがとうございます。 こちら、オラクルで書かれていますか? すいませんSQLite3を使用しております。
yambejp

2017/10/16 03:53

> こちら、オラクルで書かれていますか? > すいませんSQLite3を使用しております。 失礼しました。カテゴリをちゃんと見てませんでした。 一応mysqlを前提にした回答でした sqliteで動作しませんか? 1をtrue、0をfalseで書き換えないといけないかもしれません。 またもしINが利用できないならORで列記する感じになります。 追記しますので、ちょっとためしてみてください
退会済みユーザー

退会済みユーザー

2017/10/16 11:31

ありがとうございます。 $sql = 箇所に入れてみたところ、 エラーが表示されました。 SELECT * FROM kyujin LEFT JOIN job_type ON kyujin.job_type=job_type.id LEFT JOIN area ON kyujin.area = area.id where true AND kyujin.area = ? Warning: Invalid argument supplied for foreach() in /home/ubuntu/workspace/jobsearch/db_conect.php on line 165 Call Stack: 6.1029 237944 1. {main}() /home/ubuntu/workspace/jobsearch/db_conect.php:0
yambejp

2017/10/16 11:50 編集

おそらくちゃんとコピペしてないのでは? 私のソースはとりあえずまだDBに接続するところまでいっていないので エラーになる要素がないのですが・・・ ご自身のソースの一部を切り替えるのではなく私のソースだけで 動くかどうかをまず確かめて下さい (追記部分もコピペするだけでいいように変更しておきます)
退会済みユーザー

退会済みユーザー

2017/10/16 13:14

新しくphpファイルを作成し、動作を確認いたしましたが、 「SELECT FROM kyujin LEFT JOIN job_type ON kyujin.job_type=job_type.id LEFT JOIN area ON kyujin.area = area.id where trueAND false」 と表示され、検索結果も表示されません、 https://test170701-mh0926.c9users.io/jobsearch/test.php
yambejp

2017/10/16 13:38

where true AND false これは、何も入力や選択しなかったときに何も表示しないための処理ですね セレクトボックスを適当に選んだり、チェックボックスを適当にチェックしてサブミットすると どうなりますか?
退会済みユーザー

退会済みユーザー

2017/10/16 14:18

オフィスワークのチェックボックスを選択すると下記が表示されます。 SELECT FROM kyujin LEFT JOIN job_type ON kyujin.job_type=job_type.id LEFT JOIN area ON kyujin.area = area.id where trueAND ( false OR kyujin.job_type = ? )
yambejp

2017/10/16 14:30

選択や入力によって想定したSQL文が作成されていることがわかりますか? これに対してPDOを利用して $stmt = $pdo->prepare($sql); $stmt->execute($data); のような処理をしてください
退会済みユーザー

退会済みユーザー

2017/10/16 23:41

追加した箇所がエラーとなり、表示されました。 Array ( ) Fatal error: Call to a member function prepare() on a non-object in /home/ubuntu/workspace/jobsearch/index.php on line 67 Call Stack: 5.1615 234208 1. {main}() /home/ubuntu/workspace/jobsearch/index.php:0
yambejp

2017/10/17 03:49

そもそもpdoでsqliteへ接続する設定はできているのでしょうか?
退会済みユーザー

退会済みユーザー

2017/10/17 11:17

こちらででたデータベースへ接続しています。 $pdo = new PDO('sqlite:../haken.db');
guest

0

何も選択しない=何も入力してない=入力コントロールは初期値
ってことですよね。

今のソースコードのままでは、例えば
kyujin.area = ? は
kyujin.area = ''
と変換され、「空文字となっている情報を検索」していることになります。
(他の検索条件も同様)
結果、空文字となっている情報がDB上に存在しないから「0件」という結果となっているのだと思います。

「何か入力・選択されていればwhere条件にセットする」という風に変更してください。

投稿2017/10/15 21:33

m.ts10806

総合スコア80850

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

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

退会済みユーザー

退会済みユーザー

2017/10/15 22:33

ありがとうございます。is not nullといれてみたのですが、全件表示も、選択した検索結果もされなくなりました、 $sql = 'SELECT '. ' kyujin.id, jikyu, work_type, gyoukai, keisai_start, keisai_end, job_type.job_type, area.area'. ' FROM kyujin LEFT JOIN job_type '. ' ON kyujin.job_type=job_type.id '. ' LEFT JOIN area '. ' ON kyujin.area = area.id '. ' where kyujin.area is not null AND ( kyujin.job_type is not null OR jikyu>=? OR work_type is not null OR gyoukai is not null )';
m.ts10806

2017/10/15 22:46

そうじゃないです。。。 例えば、 $where = []; $todofuken = null; if(($_POST["todofuken1"]) != "" ){ $where[] = " kyujin.area = ? "; $todofuken = $_POST["todofuken1"]; } ・・・・ if(count($where) > 0){ $sql.= " where ".implode(" and ",$where); } if(!is_null($todofuken)){ $stmt->bindParam(1, $todofuken , PDO::PARAM_INT); } ・・・ のようにしてSQL文とbindParam自体を動的にする必要があるということです。 「入力されている情報のみwhere条件としてSQLにセットする」ということです。 もちろん、todofuken1・kyujin.areaに限らず全ての条件で同様に対応してください。 bindParamの番号は固定では対応できないのでそこは動的になるように調整してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問