回答編集履歴
4
修正
answer
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
$sql.="and ( 0 ";
|
33
33
|
$sql.="or subject like concat('%',?,'%') ";
|
34
34
|
$data[]=$subject;
|
35
|
-
$sql.="or concat('%',subject,'%')
|
35
|
+
$sql.="or ? like concat('%',subject,'%') ";
|
36
36
|
$data[]=$subject;
|
37
37
|
$sql.=") ";
|
38
38
|
}
|
@@ -40,7 +40,7 @@
|
|
40
40
|
$sql.="and ( 0 ";
|
41
41
|
$sql.="or teacher like concat('%',?,'%') ";
|
42
42
|
$data[]=$teacher;
|
43
|
-
$sql.="or concat('%',teacher,'%')
|
43
|
+
$sql.="or ? like concat('%',teacher,'%') ";
|
44
44
|
$data[]=$teacher;
|
45
45
|
$sql.=") ";
|
46
46
|
}
|
3
typo
answer
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
$data[]=$difficulty;
|
30
30
|
}
|
31
31
|
if(!is_null($subject)){
|
32
|
-
$sql.="and ( 0";
|
32
|
+
$sql.="and ( 0 ";
|
33
33
|
$sql.="or subject like concat('%',?,'%') ";
|
34
34
|
$data[]=$subject;
|
35
35
|
$sql.="or concat('%',subject,'%') like ? ";
|
@@ -37,7 +37,7 @@
|
|
37
37
|
$sql.=") ";
|
38
38
|
}
|
39
39
|
if(!is_null($teacher)){
|
40
|
-
$sql.="and ( 0";
|
40
|
+
$sql.="and ( 0 ";
|
41
41
|
$sql.="or teacher like concat('%',?,'%') ";
|
42
42
|
$data[]=$teacher;
|
43
43
|
$sql.="or concat('%',teacher,'%') like ? ";
|
2
修正
answer
CHANGED
@@ -18,4 +18,33 @@
|
|
18
18
|
$stmt = $pdo->prepare($sql);
|
19
19
|
$stmt->execute($data);
|
20
20
|
```
|
21
|
-
ただし前方後方一致はパフォーマンスがでないので注意が必要
|
21
|
+
ただし前方後方一致はパフォーマンスがでないので注意が必要
|
22
|
+
|
23
|
+
# 修正版
|
24
|
+
```PHP
|
25
|
+
$sql = "SELECT * FROM table WHERE 1 ";
|
26
|
+
$data=[];
|
27
|
+
if(!is_null($difficulty)){
|
28
|
+
$sql.="and difficulty=? ";
|
29
|
+
$data[]=$difficulty;
|
30
|
+
}
|
31
|
+
if(!is_null($subject)){
|
32
|
+
$sql.="and ( 0";
|
33
|
+
$sql.="or subject like concat('%',?,'%') ";
|
34
|
+
$data[]=$subject;
|
35
|
+
$sql.="or concat('%',subject,'%') like ? ";
|
36
|
+
$data[]=$subject;
|
37
|
+
$sql.=") ";
|
38
|
+
}
|
39
|
+
if(!is_null($teacher)){
|
40
|
+
$sql.="and ( 0";
|
41
|
+
$sql.="or teacher like concat('%',?,'%') ";
|
42
|
+
$data[]=$teacher;
|
43
|
+
$sql.="or concat('%',teacher,'%') like ? ";
|
44
|
+
$data[]=$teacher;
|
45
|
+
$sql.=") ";
|
46
|
+
}
|
47
|
+
$stmt = $pdo->prepare($sql);
|
48
|
+
$stmt->execute($data);
|
49
|
+
|
50
|
+
```
|
1
修正
answer
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
流れ的にはこうします
|
2
|
-
|
2
|
+
※追記:スペースの抜けだけ修正しました
|
3
3
|
```PHP
|
4
|
-
$sql = "SELECT * FROM table
|
4
|
+
$sql = "SELECT * FROM table WHERE 1 ";
|
5
5
|
$data=[];
|
6
6
|
if(!is_null($difficulty)){
|
7
|
-
$sql.="and difficulty=?";
|
7
|
+
$sql.="and difficulty=? ";
|
8
8
|
$data[]=$difficulty;
|
9
9
|
}
|
10
10
|
if(!is_null($subject)){
|
11
|
-
$sql.="and subject like ?";
|
11
|
+
$sql.="and subject like ? ";
|
12
12
|
$data[]="%".$subject."%";
|
13
13
|
}
|
14
14
|
if(!is_null($teacher)){
|
15
|
-
$sql.="and teacher like ?";
|
15
|
+
$sql.="and teacher like ? ";
|
16
16
|
$data[]="%".$teacher."%";
|
17
17
|
}
|
18
18
|
$stmt = $pdo->prepare($sql);
|