質問するログイン新規登録

回答編集履歴

4

誤字修正

2019/11/25 02:06

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -30,10 +30,25 @@
30
30
 
31
31
  ---
32
32
 
33
+ ```PHP
34
+
33
- ``` $qPart = array_fill( 0, count( $userData ), "(?, ?, ?, ?, ?)" );```
35
+ $qPart = array_fill( 0, count( $userData ), "(?, ?, ?, ?, ?)" );
36
+
37
+ ```
38
+
34
39
  ↑`$userData`が未定義なので
40
+
41
+
42
+ ```
35
- ```foreach ( $userData as $row ) { //bind the values one by one```
43
+ foreach ( $userData as $row ) { //bind the values one by one
44
+
45
+ ```
46
+
36
47
  ↑foreachの中の処理が多分実行されていない
37
48
 
49
+
50
+ ```PHP
38
- ``` $stmt->bindValue( $i++, $row[ '%' . preg_replace( '/(?=[!_%])/', '!', $search_name ) . '%' ], PDO::PARAM_STR );```
51
+ $stmt->bindValue( $i++, $row[ '%' . preg_replace( '/(?=[!_%])/', '!', $search_name ) . '%' ], PDO::PARAM_STR );
52
+ ```
53
+
39
54
  ↑`$stmt`も未定義なので、foreachの処理が実行されたらエラーになるはず

3

補足

2019/11/25 02:06

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -26,4 +26,14 @@
26
26
  なのに、`return`より後に記述されているのでSELECT文が実行されていません。
27
27
 
28
28
  ---
29
- まずは[PHPマニュアル](https://www.php.net/manual/en/pdostatement.execute.php)を参考にして、最低限の機能とコードでPDOの挙動について把握されることをお勧めします。
29
+ まずは[PHPマニュアル](https://www.php.net/manual/en/pdostatement.execute.php)を参考にして、最低限の機能とコードでPDOの挙動について把握されることをお勧めします。
30
+
31
+ ---
32
+
33
+ ``` $qPart = array_fill( 0, count( $userData ), "(?, ?, ?, ?, ?)" );```
34
+ ↑`$userData`が未定義なので
35
+ ```foreach ( $userData as $row ) { //bind the values one by one```
36
+ ↑foreachの中の処理が多分実行されていない
37
+
38
+ ``` $stmt->bindValue( $i++, $row[ '%' . preg_replace( '/(?=[!_%])/', '!', $search_name ) . '%' ], PDO::PARAM_STR );```
39
+ ↑`$stmt`も未定義なので、foreachの処理が実行されたらエラーになるはず

2

修正

2019/11/25 01:56

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -5,19 +5,10 @@
5
5
 
6
6
  と言うのがまだよくわかりませんが、
7
7
 
8
- とりあえず気づいた点としては、
9
- ```PHP
10
- foreach ( $userData as $row ) { //bind the values one by one
8
+ `addcslashes`について`addslashes`と誤解していたので削除
11
- $UserDataSet->bindValue( $i++, $row[ '%' . addcslashes( $search_name, '\_%' ) . '%' ], PDO::PARAM_STR );
12
- $UserDataSet->bindValue( $i++, $row[ '%' . addcslashes( $color, '\_%' ) . '%' ], PDO::PARAM_STR );
13
- $UserDataSet->bindValue( $i++, $row[ '%' . addcslashes( $category, '\_%' ) . '%' ], PDO::PARAM_STR );
14
- }
15
- ```
16
9
 
17
- で、`addcslashes`は使用してはいけません。
10
+ そもそも論として
18
11
 
19
- また、そもそも論として
20
-
21
12
  ```PHP
22
13
 
23
14
  //扱いやすい形に変える

1

補足

2019/11/25 01:48

投稿

tanat
tanat

スコア18778

answer CHANGED
@@ -32,4 +32,7 @@
32
32
  で、
33
33
  SQLが実行されるのは
34
34
  `$UserDataSet->execute();`
35
- なのに、`return`より後に記述されているのでSELECT文が実行されていません
35
+ なのに、`return`より後に記述されているのでSELECT文が実行されていません
36
+
37
+ ---
38
+ まずは[PHPマニュアル](https://www.php.net/manual/en/pdostatement.execute.php)を参考にして、最低限の機能とコードでPDOの挙動について把握されることをお勧めします。