回答編集履歴

4

誤字修正

2019/11/25 02:06

投稿

tanat
tanat

スコア18713

test CHANGED
@@ -62,16 +62,46 @@
62
62
 
63
63
 
64
64
 
65
+ ```PHP
66
+
67
+
68
+
65
- ``` $qPart = array_fill( 0, count( $userData ), "(?, ?, ?, ?, ?)" );```
69
+ $qPart = array_fill( 0, count( $userData ), "(?, ?, ?, ?, ?)" );
70
+
71
+
72
+
73
+ ```
74
+
75
+
66
76
 
67
77
  ↑`$userData`が未定義なので
68
78
 
79
+
80
+
81
+
82
+
83
+ ```
84
+
69
- ```foreach ( $userData as $row ) { //bind the values one by one```
85
+ foreach ( $userData as $row ) { //bind the values one by one
86
+
87
+
88
+
89
+ ```
90
+
91
+
70
92
 
71
93
  ↑foreachの中の処理が多分実行されていない
72
94
 
73
95
 
74
96
 
97
+
98
+
99
+ ```PHP
100
+
75
- ``` $stmt->bindValue( $i++, $row[ '%' . preg_replace( '/(?=[!_%])/', '!', $search_name ) . '%' ], PDO::PARAM_STR );```
101
+ $stmt->bindValue( $i++, $row[ '%' . preg_replace( '/(?=[!_%])/', '!', $search_name ) . '%' ], PDO::PARAM_STR );
102
+
103
+ ```
104
+
105
+
76
106
 
77
107
  ↑`$stmt`も未定義なので、foreachの処理が実行されたらエラーになるはず

3

補足

2019/11/25 02:06

投稿

tanat
tanat

スコア18713

test CHANGED
@@ -55,3 +55,23 @@
55
55
  ---
56
56
 
57
57
  まずは[PHPマニュアル](https://www.php.net/manual/en/pdostatement.execute.php)を参考にして、最低限の機能とコードでPDOの挙動について把握されることをお勧めします。
58
+
59
+
60
+
61
+ ---
62
+
63
+
64
+
65
+ ``` $qPart = array_fill( 0, count( $userData ), "(?, ?, ?, ?, ?)" );```
66
+
67
+ ↑`$userData`が未定義なので
68
+
69
+ ```foreach ( $userData as $row ) { //bind the values one by one```
70
+
71
+ ↑foreachの中の処理が多分実行されていない
72
+
73
+
74
+
75
+ ``` $stmt->bindValue( $i++, $row[ '%' . preg_replace( '/(?=[!_%])/', '!', $search_name ) . '%' ], PDO::PARAM_STR );```
76
+
77
+ ↑`$stmt`も未定義なので、foreachの処理が実行されたらエラーになるはず

2

修正

2019/11/25 01:56

投稿

tanat
tanat

スコア18713

test CHANGED
@@ -12,29 +12,11 @@
12
12
 
13
13
 
14
14
 
15
- とりあえず気づいた点としては、
16
-
17
- ```PHP
18
-
19
- foreach ( $userData as $row ) { //bind the values one by one
15
+ `addcslashes`について`addslashes`と誤解していたので削除
20
-
21
- $UserDataSet->bindValue( $i++, $row[ '%' . addcslashes( $search_name, '\_%' ) . '%' ], PDO::PARAM_STR );
22
-
23
- $UserDataSet->bindValue( $i++, $row[ '%' . addcslashes( $color, '\_%' ) . '%' ], PDO::PARAM_STR );
24
-
25
- $UserDataSet->bindValue( $i++, $row[ '%' . addcslashes( $category, '\_%' ) . '%' ], PDO::PARAM_STR );
26
-
27
- }
28
-
29
- ```
30
16
 
31
17
 
32
18
 
33
- で、`addcslashes`は使用してはいけません。
34
-
35
-
36
-
37
- また、そもそも論として
19
+ そもそも論として
38
20
 
39
21
 
40
22
 

1

補足

2019/11/25 01:48

投稿

tanat
tanat

スコア18713

test CHANGED
@@ -66,4 +66,10 @@
66
66
 
67
67
  `$UserDataSet->execute();`
68
68
 
69
- なのに、`return`より後に記述されているのでSELECT文が実行されていません
69
+ なのに、`return`より後に記述されているのでSELECT文が実行されていません
70
+
71
+
72
+
73
+ ---
74
+
75
+ まずは[PHPマニュアル](https://www.php.net/manual/en/pdostatement.execute.php)を参考にして、最低限の機能とコードでPDOの挙動について把握されることをお勧めします。