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

質問編集履歴

2

修正

2017/03/31 02:12

投稿

coko1
coko1

スコア276

title CHANGED
@@ -1,1 +1,1 @@
1
- mysqli コミト タイミング
1
+ PUT メソドとは
body CHANGED
@@ -1,72 +1,2 @@
1
- 現在ユーザー情報を登録する機能の処理を作っていて、登録ールアレスメールを送信するようにしているのですが、現在のコードだとPHPファイル2の記述でmysqli_autocommitを使用して自動的にコミットしてるため、SQL実行→コミット→メール送信という流れで処理が流れていきす。ですが、メール送信処理でエラーになりメール送信に失敗した場合にデータが登録されてるというのは不自然なため処理の流れをSQL実行→メール送信→正常終了の場合コミット、失敗時ロールバック。といった流れに変更たいす。どのように変更すれば実装できますでしょうか?また、メール送信後にコミットを行うことは可能でしょうか?
2
- ・PHPファイル1
3
- ```php
4
- //登録処理実行
5
- if(!update($sql, $param, $count)){
6
- $ret = array('result' => false,'count' => $count);
7
- header('Cozzntent-Type: application/json');
8
- echo json_encode( $ret );
9
- exit;
10
- }else{
11
- $ret = array('result' => true,'count' => $count);
12
- }
13
-
14
- /**
15
- *メール送信
16
- */
17
- if($action == 'insert'){
18
- //メール送信処理
19
- }
20
-
21
- header('Cozzntent-Type: application/json');
22
- echo json_encode( $ret );
23
- exit;
24
- ```
25
- ・PHPファイル2
26
- ```php
27
- function update($sql, $params, &$count=0){
28
- //$data = array(); //データ配列初期化
29
- $mysqli = get_connection();
30
- if(is_null($mysqli)){
31
- return false;
32
- }
33
- if(!is_array($params))$params = array();
34
-
35
- mysqli_autocommit($mysqli, TRUE);
36
-
37
- if(count($params)>0){
38
- //パラメータが1つ以上存在する場合
39
- $stmt = mysqli_stmt_init($mysqli);
40
- if(!mysqli_stmt_prepare($stmt, $sql)){
41
- //SQLステートメント実行準備失敗
42
- return false;
43
- }
44
- $stmt_params = array($stmt, '');
45
- foreach($params as $idx => $value){
46
- if(is_int($value))$stmt_params[1] .= 'i';
47
- else if(is_float($value))$stmt_params[1] .= 'd';
48
- else if(is_string($value))$stmt_params[1] .= 's';
49
- else $stmt_params[1] .= 's';
50
- $stmt_params[] = &$params[$idx];
51
- }
52
- call_user_func_array( "mysqli_stmt_bind_param" ,$stmt_params );
53
- if(!mysqli_stmt_execute($stmt)){
54
- //SQLステートメント実行失敗
55
- return false;
56
- }
57
- }else{
58
- //上記以外の場合
59
- mysqli_query($mysqli, $sql, MYSQLI_STORE_RESULT );
60
- }
61
- /*
62
-
63
- //更新件数取得
64
- $count = mysqli_affected_rows($mysqli);
65
-
66
- mysqli_free_result($result);
67
- mysqli_close($mysqli);
68
-
69
- return true;
70
-
71
- }
72
- ```
1
+ PUTソッドについ調べているのですが、いまいっくり理解できません。
2
+ POSTとはどういった違いあって、どういう場面で使用するのかなど、噛み砕いて説明できる方がおりましたら教えていただけると参考になります。

1

修正

2017/03/31 02:11

投稿

coko1
coko1

スコア276

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