質問編集履歴

3

新たに原因の予想がついたのでそれが正しいのか教えてほしいです

2017/01/23 17:24

投稿

m_s
m_s

スコア51

test CHANGED
File without changes
test CHANGED
@@ -128,6 +128,12 @@
128
128
 
129
129
  内の処理を通った場合、それより先のループで配列$Listにデータが格納されなくなってしまいます。(下の処理が実行されない)
130
130
 
131
+ また、$List内のデータが原因なのではないかと思ったのですがそうでもない様でした。
132
+
133
+ ただ、else文に全てwhile文の各ループが通った時は全ての新しいデータが配列$Listに格納されました
134
+
135
+
136
+
131
137
 
132
138
 
133
139
  ```PHP
@@ -144,10 +150,18 @@
144
150
 
145
151
 
146
152
 
147
- $List内のデータが原因なのではな思ったのですがそうでもない様でした。
153
+ ###(追記)原因を探って・・・
148
154
 
149
- ただ、else文に全てwhile文の各ループが通った時は全ての新しいデータが配列$Listに格納されました
155
+ ```PHP
150
156
 
157
+ if($row["state"] == 1){
151
158
 
159
+ }
152
160
 
161
+ ```
162
+
163
+ 内のUPDATEをコメントアウトすると全てのループでデータが格納されたのでUPDATEがおかしいことがわかりました
164
+
153
- ようになる理由を教えてほしいで
165
+ おそらく、UPDATEをPHP内で複数回呼ぶとだめっぽいんですけどそ予想は正しいでしょうか?
166
+
167
+ (

2

修正依頼の要望で情報を追加しました

2017/01/23 17:24

投稿

m_s
m_s

スコア51

test CHANGED
File without changes
test CHANGED
@@ -16,9 +16,9 @@
16
16
 
17
17
 
18
18
 
19
- //DBから値を取得する
20
19
 
20
+
21
- $sql = "SELECT ";
21
+ $sql = "SELECT id,state,mail_from_adress,mail_to,mail_subject,mail_text,mail_answer,report_result,mail_URL FROM `attack_mail_db`";
22
22
 
23
23
  $query = mysql_query($sql) or die(mysql_error());
24
24
 
@@ -28,15 +28,39 @@
28
28
 
29
29
  if($row["state"] == 1) {
30
30
 
31
-
31
+ $report_check_num = 0;
32
32
 
33
- }
33
+ $report_check_correct_count = 0;
34
34
 
35
- //DBへ保存
36
35
 
37
- $sql = "UPDATE-";
38
36
 
37
+ $i = 1;
38
+
39
+ while ($row["report_result"][$i] != "]") {
40
+
41
+ $report_check_num++;
42
+
43
+ if ($row['report_result'][$i] == 0) {
44
+
45
+ $report_check_correct_count++;
46
+
47
+ }
48
+
49
+ $i++;
50
+
51
+ }
52
+
53
+ $report_check_num = $report_check_num - ($report_check_num - 1) / 2;
54
+
55
+
56
+
57
+ $report_check_correct_rate = bcdiv($report_check_num, $report_check_correct_count, 2);
58
+
59
+ $mail_id = $row["id"];
60
+
61
+ $sql = "UPDATE `attack_mail_db` SET `correctRate` = '$report_check_correct_rate' WHERE `attack_mail_db`.`id` = '$mail_id'";
62
+
39
- $query = mysql_query($sql) or die(mysql_error());
63
+ $query = mysql_query($sql) or die(mysql_error());
40
64
 
41
65
  }
42
66
 
@@ -46,9 +70,25 @@
46
70
 
47
71
  }
48
72
 
49
- $List [] = array(
50
73
 
74
+
75
+ $mailList [] = array(
76
+
77
+ 'id' => $row["id"],
78
+
79
+ 'state' => $row["state"],
80
+
81
+ 'cometime' => "",
82
+
83
+ 'mailSubject' => "先日相談したメニューについて",
84
+
85
+ 'mailFrom' => "飯田太郎",
86
+
51
- 'Name' => "aaaaaaaaaa",
87
+ 'mailTo' => "(株)○○食品",
88
+
89
+ 'mailName' => "masaki@gmail.com",
90
+
91
+ 'correctRate' => $report_check_correct_rate,//count($row["report_result"]),//$report_check_num,
52
92
 
53
93
  );
54
94
 
@@ -56,7 +96,9 @@
56
96
 
57
97
  }
58
98
 
99
+
100
+
59
- $result = json_encode($List, JSON_UNESCAPED_UNICODE);
101
+ $result = json_encode($mailList, JSON_UNESCAPED_UNICODE);
60
102
 
61
103
  printf($result);
62
104
 

1

追加処理のタイミングを変更

2017/01/23 16:09

投稿

m_s
m_s

スコア51

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 下のPHPのwhile文ループ内のif文を1回通過するとそれ以降のループで配列の追加処理が行われなくなってしまいます、ただelse文にすべての処理が通ると追加処理が全てのループで行われるようなのですがなぜそうなってしまうのかの理由がわからないので教えてほしいです。詳細説明はPHPコードの下にあります。
1
+ 下のPHPのwhile文ループ内のif文を1回通過するとそれより先のループで配列の追加処理が行われなくなってしまいます、ただelse文にすべての処理が通ると追加処理が全てのループで行われるようなのですがなぜそうなってしまうのかの理由がわからないので教えてほしいです。詳細説明はPHPコードの下にあります。
2
2
 
3
3
 
4
4
 
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- 内の処理を通った場合、それ以降のループで配列$Listにデータが格納されなくなってしまいます。(下の処理が実行されない)
87
+ 内の処理を通った場合、それより先のループで配列$Listにデータが格納されなくなってしまいます。(下の処理が実行されない)
88
88
 
89
89
 
90
90