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

回答編集履歴

5

レイアウト修正

2016/08/17 03:19

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -69,7 +69,7 @@
69
69
 
70
70
  更に付け加えると、
71
71
  PHP側の処理のうちmysqli_*(mysqli始まりの関数群)というのが、
72
- PHPとMySQLを橋渡ししている処理となります。
72
+ **PHPとMySQLを橋渡ししている処理**となります。
73
73
 
74
74
  つまり今回のケースでは、
75
75
  **「mysqli_*」の関数以外ではDBとの通信処理が発生するはずがない**ということを抑えてもらえればと思います。

4

誤字修正

2016/08/17 03:18

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -62,7 +62,7 @@
62
62
  3番目の**mysqli_query関数**がループ処理1回ごとに呼び出されるという点から受けたものと考えられます。
63
63
 
64
64
  また**implode関数**というのはデータベース(MySQL側)の処理ではなく、
65
- **PHP側の処理**の処理となります。
65
+ **PHP側の処理**となります。
66
66
 
67
67
  MySQL側の処理とPHP側の処理というのは異なるものなので、
68
68
  上記2つは基本的には切り離して考えてください。

3

追記

2016/08/17 03:16

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -46,4 +46,30 @@
46
46
  [MySQL IN句(リストで比較)](http://bituse.info/mysql/24)
47
47
 
48
48
  SQL構文の知識に不安がある場合は、
49
- 確認の意味でも[上記サイト](http://bituse.info/mysql/)を簡単に巡回すると良いかもしれませんね。
49
+ 確認の意味でも[上記サイト](http://bituse.info/mysql/)を簡単に巡回すると良いかもしれませんね。
50
+
51
+ ###コメントを受けまして
52
+ 先ずDBアクセスが発生する処理を整理しましょう。
53
+ 今回提示していただいたソースコードでDBとの通信が生じるのは、
54
+ - mysqli_connect
55
+ - mysqli_select_db
56
+ - mysqli_query
57
+ の3点です。
58
+
59
+ **「上記処理の実行回数 = データベースとの通信回数」**と考えてください。
60
+
61
+ foreachではいけないという指摘は、
62
+ 3番目の**mysqli_query関数**がループ処理1回ごとに呼び出されるという点から受けたものと考えられます。
63
+
64
+ また**implode関数**というのはデータベース(MySQL側)の処理ではなく、
65
+ **PHP側の処理**の処理となります。
66
+
67
+ MySQL側の処理とPHP側の処理というのは異なるものなので、
68
+ 上記2つは基本的には切り離して考えてください。
69
+
70
+ 更に付け加えると、
71
+ PHP側の処理のうちmysqli_*(mysqli始まりの関数群)というのが、
72
+ PHPとMySQLを橋渡ししている処理となります。
73
+
74
+ つまり今回のケースでは、
75
+ **「mysqli_*」の関数以外ではDBとの通信処理が発生するはずがない**ということを抑えてもらえればと思います。

2

誤字修正

2016/08/17 03:15

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  ```
27
27
 
28
28
  上記の2つのSQLのIN句の括弧内の値の入り方に注目して下さい。
29
- の該当箇所から引っ張ってくると、
29
+ 質問者さん掲示コードの該当箇所から引っ張ってくると、
30
30
  ```PHP
31
31
  WHERE id IN($id) // この時の$idの値が「1, 2, 3」のような形式である必要がある!
32
32
  ```

1

誤字修正

2016/08/16 10:57

投稿

Panzer_vor
Panzer_vor

スコア1636

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  先ずは**implode関数**を使って配列を展開すると良いかなと思います。
3
3
 
4
4
  さて今回のケースのような場合は、
5
- **最終的に組み立てべきSQLの完成像**を意識しつつ取り組んでいただきたいのですが、
5
+ **最終的に組み立てべきSQLの完成像**を意識しつつ取り組んでいただきたいのですが、
6
6
  先ず実行する必要のあるSQLの完成像は以下のようなイメージとなることを掴んでおいて下さい。
7
7
 
8
8
  - UPDATE
@@ -38,7 +38,7 @@
38
38
  カンマ区切りリストを得る場合は、
39
39
  implode関数を利用しましょう。
40
40
 
41
-
41
+ ###IN句について
42
42
  最後にもしかしたら誤解しているかもしれないので念のため補足しますが、
43
43
  SQLで指定している「id in(〜)」の記述内に出てくる**IN句**ですが、
44
44
  これは**PHP側の構文ではなくSQL側(MySQL)の構文**となります。