![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
現在、mysqlのデータベースを使ったphpプログラムを書いているのですが、
以下のように、続けて2つのデータベース処理を記述している部分があります。
$db=connectDb();
//処理1
$st1=$db->prepare("update table1 set title=:title where id=:id1 limit 1");
$st1->execute(array(":title"=>$title,":id"=>$id));
//処理2
$st2=$db->prepare("update table2 set image=:image where id=:id2 limit 1");
$st2->execute(array(":image"=>$image,":id"=>$id2));
db=NULL;
ここで質問があります。
このような記述ですとなんらかの理由により、例えば、
「処理1のアップデート処理は成功したが、
次の処理2のアップデート処理には失敗してしまった。」
というような問題は起きることがあるのでしょうか?
起きることがある場合、それに備えてどのような記述をすれば対応できるでしょうか?
ご存知の方、ご回答いただければ幸いです。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
以下のリンクに全てまとめてあります。
Qiita - PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71
【失敗したときにどうなるか】
PDO::ERRMODE_EXCEPTIONが有効 → PDOExceptionがスローされる
PDO::ERRMODE_EXCEPTIONが無効 → executeの返り値がFALSEになる
返り値を毎回チェックするのは億劫なので、connectDb()の中でこのオプションを有効にしておくことを推奨します。
また、片方だけ失敗したら困る場合には「トランザクション処理」を行います。PDOExceptionをスローするように設定してある場合、Try~Catchを2重に設けて、内側でロールバックを実行する必要があります。(このあたりも記事に全部書いてるので読んでください。)
ご回答いただきありがとうございます。
参考リンク、ありがとうございます。
「トランザクション処理」、私の考えていた不安はまさにこれでした。
これで解決できそうです。
この度は有益なご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- PHP php エラー 2 2022/10/23 16:43
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入れ子になっているHTMLタグも...
-
PHPのif文でその処理を途中で抜...
-
インスタンス化に伴うメモリ消...
-
DBへの書き込みとメール送信を...
-
javascriptの値をPHPへ渡したい
-
PHPExcel処理速度が遅い
-
PHP内、ボタン押下と同時にリロ...
-
PHPが処理を途中でやめる。原因...
-
ページの一部だけリロード
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
パースエラーとは?
-
PHPでネットワークドライブのop...
-
CFileDialogの最初のディレクト...
-
[php初心者]サイトを見てデータ...
-
PHP session_destroyとsession...
-
VBSの「MsgBox」について
-
PHPからMSSQLへの接続結果の文...
-
存在しないメールアドレスかど...
-
i18n_convert と mb_convert_e...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
PHPが処理を途中でやめる。原因...
-
phpの処理中に画面表示ををする...
-
関数の前にアットマークが付く場合
-
PHPで偶数と奇数を判断するには
-
symfonyのCriteriaで実行すると...
-
System関数で変数を受け渡す方法
-
条件演算子
-
入れ子になっているHTMLタグも...
-
文字列の10+10を20と表示したい
-
インスタンス化に伴うメモリ消...
-
PHPExcel処理速度が遅い
-
ページの一部だけリロード
-
携帯サイトの構築について
-
JSPでevalを使いたい
-
PHP内、ボタン押下と同時にリロ...
-
◆バックエンド処理の終了を知り...
-
csvファイルの読込みとソート
-
Cronで同じ処理を複数同時に実...
-
mysql データベース処理が途中...
おすすめ情報