回答編集履歴

3

見直し

2019/01/16 00:38

投稿

退会済みユーザー
test CHANGED
@@ -9,6 +9,10 @@
9
9
  where句を構成するのに多少冗長になっても、
10
10
 
11
11
  (そのままSQL文に織り込まない)数字や文字列など単純なデータにするべきです。
12
+
13
+ そして、受信した`$_POST`や`$_GET`に望まない不正なデータが含まれていないか検証する必要もあります。
14
+
15
+ (その検証をラクにする一つの手段として、`filter_input()`などがあります。)
12
16
 
13
17
 
14
18
 
@@ -28,7 +32,11 @@
28
32
 
29
33
  それと、`$_POST['~']`とか`$_REQUEST['~']`とか
30
34
 
31
- 参照するデータが存在しない場合はちょっとしたエラーメッセージがログに残るので、
35
+ 参照するデータが存在しない場合はちょっとしたエラーメッセージが
36
+
37
+ Notice: Undefined index: なんとか in 行番号
38
+
39
+ などとログに残るので、
32
40
 
33
41
  `filter_input()`や`filter_input_array()`にしなさいって言われるぞ。
34
42
 

2

加筆修正

2019/01/16 00:38

投稿

退会済みユーザー
test CHANGED
@@ -31,3 +31,13 @@
31
31
  参照するデータが存在しない場合はちょっとしたエラーメッセージがログに残るので、
32
32
 
33
33
  `filter_input()`や`filter_input_array()`にしなさいって言われるぞ。
34
+
35
+
36
+
37
+ さらに、
38
+
39
+ いちいち`if (strlen($where) > 0) {`をつけると無駄にソースコードが長くなるので、
40
+
41
+ 私は配列に`$where_terms[] = 'a = 1';`みたいなのを積み上げておいて、
42
+
43
+ 最後に`$where = 'WHERE ' . implode(' AND ', $where_terms);`みたいなことをするよ。

1

加筆修正

2019/01/15 12:23

投稿

退会済みユーザー
test CHANGED
@@ -23,3 +23,11 @@
23
23
  せめて`urlencode()`でエンコードしますよ普通は。
24
24
 
25
25
  `&`や`=`や`?`などurlに直接書いちゃいけない文字を置き換えてくれます。
26
+
27
+
28
+
29
+ それと、`$_POST['~']`とか`$_REQUEST['~']`とか
30
+
31
+ 参照するデータが存在しない場合はちょっとしたエラーメッセージがログに残るので、
32
+
33
+ `filter_input()`や`filter_input_array()`にしなさいって言われるぞ。