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

質問編集履歴

6

修正

2021/09/04 05:57

投稿

kou___chan
kou___chan

スコア27

title CHANGED
File without changes
body CHANGED
@@ -128,7 +128,7 @@
128
128
 
129
129
  ```
130
130
  ---
131
- 追記:phpは7、mysqlは5.5、model.phpにて$result===falseについては他のブックでも使っており特に問題ありません
131
+ 追記:phpは7、mysqlは5.5、model.phpにてSQL処理後のチェック$result===falseについては他のブックでも使っており特に問題ありません
132
132
 
133
133
  ![イメージ説明](d3347f12aa310bbcffb820df12917c78.jpeg)
134
134
  上のArray([0]=>は$msgに入り、下のArray()は$err_msgに入ってしまいます
@@ -146,6 +146,8 @@
146
146
  問題:
147
147
  ①$err_msgにArray()というデータが入ってしまうため、トランザクションが実行されない
148
148
  ②$msgにも…に登録しました!!というメッセージが入ることは良いのですが、Array([0])=>という余計なデータが入ってしまう
149
+ ③$msgも$err_msgどちらも配列となります。またSQL実行する際に初期化しておりますが、
149
- これらの余計なデータがどこで入るのかわからない。
150
+ これらの変数に余計なデータがいったいどこで入るのかわからない状況です
151
+ ④var_dumpにて初期化した時点ですでに入っている様に思います。
150
152
  ※SQLのinsertとupdate文についてはphpmyadminなどで実行すると問題無く追加されます…
151
153
  宜しくお願いいたします

5

修正

2021/09/04 05:57

投稿

kou___chan
kou___chan

スコア27

title CHANGED
File without changes
body CHANGED
@@ -26,6 +26,33 @@
26
26
  }
27
27
 
28
28
  modelphpで
29
+ //重複データチェック
30
+ function check_contract_date($link, $id, $name, $err_msg) {
31
+ $flg = FALSE;
32
+ $data[] = "";
33
+ $count_rows = "";
34
+
35
+ $sql = "SELECT * FROM contract_date WHERE id = '$id' AND name = '$name'";
36
+
37
+ $result = mysqli_query($link, $sql);
38
+
39
+ if ($result === false) {
40
+ $err_msg[] = 'SQLに失敗しました!';
41
+ } else {
42
+ $count_rows = mysqli_num_rows($result);
43
+ while ($row = mysqli_fetch_assoc($result)) {
44
+ $data[] = $row;
45
+ }
46
+
47
+ if ($count_rows > 0) {
48
+ $flg = TRUE;
49
+ } else {
50
+ $flg = FALSE;
51
+ }
52
+ }
53
+ return array($flg, $err_msg);
54
+ }
55
+
29
56
  //contract_date用登録処理----------------------------------------------------------------------
30
57
  function insert_contract_date($link, $today, $id, $name, $mail, $fusaick, $created_date, $corporation, $department, $hire_date, $manager, $telephone, $bring1, $bring2, $bring3, $login_name, $err_msg) {
31
58
  $err_msg= [];

4

修正

2021/09/04 05:53

投稿

kou___chan
kou___chan

スコア27

title CHANGED
File without changes
body CHANGED
@@ -104,7 +104,7 @@
104
104
  追記:phpは7、mysqlは5.5、model.phpにて$result===falseについては他のブックでも使っており特に問題ありません
105
105
 
106
106
  ![イメージ説明](d3347f12aa310bbcffb820df12917c78.jpeg)
107
- 上のArray([0]=>は$msgに入り、下のArray()は$err_msgに入ってしまいます
107
+ 上のArray([0]=>は$msgに入り、下のArray()は$err_msgに入ってしまいます
108
108
  ---
109
109
  追記2:返信まことにありがとうございます。
110
110
  分かりにくい記載になり大変申し訳ありません。

3

修正

2021/09/04 05:46

投稿

kou___chan
kou___chan

スコア27

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,5 @@
1
+ ```ここに言語を入力
1
- ```メインphpで
2
+ メインphpで
2
3
  // 更新系の処理を行う前にトランザクション開始(オートコミットをオフ)
3
4
  mysqli_autocommit($link, false);
4
5
 
@@ -23,7 +24,8 @@
23
24
  // 処理取消
24
25
  mysqli_rollback($link);
25
26
  }
27
+
26
- ```modelphpで
28
+ modelphpで
27
29
  //contract_date用登録処理----------------------------------------------------------------------
28
30
  function insert_contract_date($link, $today, $id, $name, $mail, $fusaick, $created_date, $corporation, $department, $hire_date, $manager, $telephone, $bring1, $bring2, $bring3, $login_name, $err_msg) {
29
31
  $err_msg= [];
@@ -84,7 +86,8 @@
84
86
  return array($msg, $err_msg);
85
87
  }
86
88
 
89
+
87
- ```上記を実行するとメインの最終トランザクション確定部分で$err_msgにArray()…みたいなのが必ず入ってしまう
90
+ 上記を実行するとメインの最終トランザクション確定部分で$err_msgにArray()…みたいなのが必ず入ってしまう
88
91
  ちなみに$msgにもArray()が入ってしまいます。
89
92
 
90
93
  // トランザクション成否判定
@@ -96,12 +99,13 @@
96
99
  mysqli_rollback($link);
97
100
  }
98
101
 
99
-
102
+ ```
103
+ ---
100
104
  追記:phpは7、mysqlは5.5、model.phpにて$result===falseについては他のブックでも使っており特に問題ありません
101
105
 
102
106
  ![イメージ説明](d3347f12aa310bbcffb820df12917c78.jpeg)
103
107
  上のArray([0]=>は$msgに入いり、下のArray()は$err_msgに入ってしまいます
104
-
108
+ ---
105
109
  追記2:返信まことにありがとうございます。
106
110
  分かりにくい記載になり大変申し訳ありません。
107
111
 

2

追記2

2021/09/04 05:37

投稿

kou___chan
kou___chan

スコア27

title CHANGED
File without changes
body CHANGED
@@ -100,4 +100,21 @@
100
100
  追記:phpは7、mysqlは5.5、model.phpにて$result===falseについては他のブックでも使っており特に問題ありません
101
101
 
102
102
  ![イメージ説明](d3347f12aa310bbcffb820df12917c78.jpeg)
103
- 上のArray([0]=>は$msgに入いり、下のArray()は$err_msgに入ってしまいます
103
+ 上のArray([0]=>は$msgに入いり、下のArray()は$err_msgに入ってしまいます
104
+
105
+ 追記2:返信まことにありがとうございます。
106
+ 分かりにくい記載になり大変申し訳ありません。
107
+
108
+ やりたい事:
109
+ ①DBに同ID同氏名のキーを使い重複があるかチェックをします
110
+ ②重複データがある場合、update処理、ない場合insert処理をおこないたい
111
+ ③その際、model.phpにてSQLの処理をおこないエラーが無く実行されれば$msgへ完了メッセージ代入
112
+ ④メイン.phpにもどりSQL処理にてエラーが無い($err_msgが空)の場合、トランザクション確定
113
+ ⑤最後に完了処理のためview.phpに戻り$msgのメッセージを表示して完了を予定しております
114
+
115
+ 問題:
116
+ ①$err_msgにArray()というデータが入ってしまうため、トランザクションが実行されない
117
+ ②$msgにも…に登録しました!!というメッセージが入ることは良いのですが、Array([0])=>という余計なデータが入ってしまう
118
+ ③これらの余計なデータがどこで入るのかわからない。
119
+ ※SQLのinsertとupdate文についてはphpmyadminなどで実行すると問題無く追加されます…
120
+ 宜しくお願いいたします

1

追記

2021/09/04 05:16

投稿

kou___chan
kou___chan

スコア27

title CHANGED
File without changes
body CHANGED
@@ -94,4 +94,10 @@
94
94
  } else {
95
95
  // 処理取消
96
96
  mysqli_rollback($link);
97
- }
97
+ }
98
+
99
+
100
+ 追記:phpは7、mysqlは5.5、model.phpにて$result===falseについては他のブックでも使っており特に問題ありません
101
+
102
+ ![イメージ説明](d3347f12aa310bbcffb820df12917c78.jpeg)
103
+ 上のArray([0]=>は$msgに入いり、下のArray()は$err_msgに入ってしまいます