質問編集履歴
3
新たに原因の予想がついたのでそれが正しいのか教えてほしいです
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
|
-
|
153
|
+
###(追記)原因を探っていると・・・
|
148
154
|
|
149
|
-
|
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
修正依頼の要望で情報を追加しました
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
|
-
'
|
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
追加処理のタイミングを変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
下のPHPのwhile文ループ内のif文を1回通過するとそれ
|
1
|
+
下のPHPのwhile文ループ内のif文を1回通過するとそれより先のループで配列の追加処理が行われなくなってしまいます、ただelse文にすべての処理が通ると追加処理が全てのループで行われるようなのですがなぜそうなってしまうのかの理由がわからないので教えてほしいです。詳細説明はPHPコードの下にあります。
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
内の処理を通った場合、それ
|
87
|
+
内の処理を通った場合、それより先のループで配列$Listにデータが格納されなくなってしまいます。(下の処理が実行されない)
|
88
88
|
|
89
89
|
|
90
90
|
|