回答編集履歴

2

chousei

2021/11/15 09:58

投稿

yambejp
yambejp

スコア114878

test CHANGED
@@ -11,3 +11,53 @@
11
11
 
12
12
 
13
13
  それとnullはinで拾えないし、疑問符パラメータのprepareで渡せないでしょう
14
+
15
+ ```PHP
16
+
17
+ $year = '2021';
18
+
19
+ $flug = [NULL,1,2,3,4];
20
+
21
+ $data=[];
22
+
23
+
24
+
25
+ $sql="SELECT id FROM sample_tbl WHERE 1 ";
26
+
27
+ if($year){
28
+
29
+ $sql.="AND year = ? ";
30
+
31
+ $data[]=$year;
32
+
33
+ }
34
+
35
+ if(count($flug)){
36
+
37
+ $sql.="AND (0 ";
38
+
39
+ if(in_array(null,$flug,true)){
40
+
41
+ $sql.="OR flug is null ";
42
+
43
+ }
44
+
45
+ $flug=array_diff($flug, [null]);
46
+
47
+ if(count($flug)){
48
+
49
+ $sql.="OR flug IN(".implode(",",array_fill(0,count($flug),"?")).")";
50
+
51
+ $data=array_merge($data,$flug);
52
+
53
+ }
54
+
55
+ $sql.=") ";
56
+
57
+ }
58
+
59
+ print $sql.";<br>\n";
60
+
61
+ print_r($data);
62
+
63
+ ```

1

追記

2021/11/15 09:58

投稿

yambejp
yambejp

スコア114878

test CHANGED
@@ -7,3 +7,7 @@
7
7
 
8
8
 
9
9
  全部疑問符パラメータにすればよいでしょう
10
+
11
+
12
+
13
+ それとnullはinで拾えないし、疑問符パラメータのprepareで渡せないでしょう