質問編集履歴

2

修正

2017/03/31 02:12

投稿

coko1
coko1

スコア276

test CHANGED
@@ -1 +1 @@
1
- mysqli コミト タイミング
1
+ PUT メソドとは
test CHANGED
@@ -1,143 +1,3 @@
1
- 現在ユーザー情報を登録する機能の処理を作っていて、登録ールアレスメールを送信するようにしているのですが、現在のコードだとPHPファイル2の記述でmysqli_autocommitを使用して自動的にコミットしてるため、SQL実行→コミット→メール送信とう流れで処理が流れていきます。ですが、メール送信処理でエラーになメール送信に失敗した場合にデータが登録されているというのは不自然なため処の流れをSQL実行→メール送信→正常終了の場合コミット、失敗時ロールバック。といった流れに変更したいす。どのように変更すれば実装できますでしょうか?また、メール送信後にコミットを行うことは可能でしょうか?
1
+ PUTソッドについ調べているのですが、いちしっくり理できません。
2
2
 
3
- ・PHPファイル1
4
-
5
- ```php
6
-
7
- //登録処理実行
8
-
9
- if(!update($sql, $param, $count)){
10
-
11
- $ret = array('result' => false,'count' => $count);
12
-
13
- header('Cozzntent-Type: application/json');
14
-
15
- echo json_encode( $ret );
16
-
17
- exit;
18
-
19
- }else{
20
-
21
- $ret = array('result' => true,'count' => $count);
22
-
23
- }
24
-
25
-
26
-
27
- /**
28
-
29
- *メール送信
30
-
31
- */
32
-
33
- if($action == 'insert'){
34
-
35
- //メール送信処理
36
-
37
- }
38
-
39
-
40
-
41
- header('Cozzntent-Type: application/json');
42
-
43
- echo json_encode( $ret );
44
-
45
- exit;
46
-
47
- ```
48
-
49
- ・PHPファイル2
50
-
51
- ```php
52
-
53
- function update($sql, $params, &$count=0){
54
-
55
- //$data = array(); //データ配列初期化
56
-
57
- $mysqli = get_connection();
58
-
59
- if(is_null($mysqli)){
60
-
61
- return false;
62
-
63
- }
64
-
65
- if(!is_array($params))$params = array();
66
-
67
-
68
-
69
- mysqli_autocommit($mysqli, TRUE);
70
-
71
-
72
-
73
- if(count($params)>0){
74
-
75
- //パラメータが1つ以上存在する場合
76
-
77
- $stmt = mysqli_stmt_init($mysqli);
78
-
79
- if(!mysqli_stmt_prepare($stmt, $sql)){
80
-
81
- //SQLステートメント実行準備失敗
82
-
83
- return false;
84
-
85
- }
86
-
87
- $stmt_params = array($stmt, '');
88
-
89
- foreach($params as $idx => $value){
90
-
91
- if(is_int($value))$stmt_params[1] .= 'i';
92
-
93
- else if(is_float($value))$stmt_params[1] .= 'd';
94
-
95
- else if(is_string($value))$stmt_params[1] .= 's';
96
-
97
- else $stmt_params[1] .= 's';
98
-
99
- $stmt_params[] = &$params[$idx];
100
-
101
- }
102
-
103
- call_user_func_array( "mysqli_stmt_bind_param" ,$stmt_params );
3
+ POSTとはどういった違いあって、どういう場面で使用するのかなど、噛み砕いて説明できる方がおりましたら教えていただけると参考になります。
104
-
105
- if(!mysqli_stmt_execute($stmt)){
106
-
107
- //SQLステートメント実行失敗
108
-
109
- return false;
110
-
111
- }
112
-
113
- }else{
114
-
115
- //上記以外の場合
116
-
117
- mysqli_query($mysqli, $sql, MYSQLI_STORE_RESULT );
118
-
119
- }
120
-
121
- /*
122
-
123
-
124
-
125
- //更新件数取得
126
-
127
- $count = mysqli_affected_rows($mysqli);
128
-
129
-
130
-
131
- mysqli_free_result($result);
132
-
133
- mysqli_close($mysqli);
134
-
135
-
136
-
137
- return true;
138
-
139
-
140
-
141
- }
142
-
143
- ```

1

修正

2017/03/31 02:11

投稿

coko1
coko1

スコア276

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 現在ユーザー情報を登録する処理を作っていて、登録メールアドレスメールを送信するようにしているのですが、現在のコードだとPHPファイル2の記述でmysqli_autocommitを使用して自動的にコミットしているため、SQL実行→コミット→メール送信という流れで処理が流れていきます。ですが、メール送信処理でエラーになりメール送信に失敗した場合にデータが登録されているというのは不自然なため処理の流れをSQL実行→メール送信→正常終了の場合コミット、失敗時ロールバック。といった流れに変更したいです。どのように変更すれば実装できますでしょうか?また、メール送信後にコミットを行うことは可能でしょうか?
1
+ 現在ユーザー情報を登録する機能の処理を作っていて、登録メールアドレスメールを送信するようにしているのですが、現在のコードだとPHPファイル2の記述でmysqli_autocommitを使用して自動的にコミットしているため、SQL実行→コミット→メール送信という流れで処理が流れていきます。ですが、メール送信処理でエラーになりメール送信に失敗した場合にデータが登録されているというのは不自然なため処理の流れをSQL実行→メール送信→正常終了の場合コミット、失敗時ロールバック。といった流れに変更したいです。どのように変更すれば実装できますでしょうか?また、メール送信後にコミットを行うことは可能でしょうか?
2
2
 
3
3
  ・PHPファイル1
4
4