お世話になります。
現在、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ランキング
-
PHPのif文でその処理を途中で抜...
-
phpの処理中に画面表示ををする...
-
プログラム内で処理中断後も継...
-
掲示板で任意のIDを二つ使いたい
-
条件式の変数化
-
プログラムの実行について
-
任意のサイトのテキストボック...
-
Location後の処理について
-
・オブジェクト指向のメリット...
-
onedrive にexcelファイルをア...
-
.phpと.incファイルの違いはな...
-
別ファイルの変数を呼び出した...
-
PHPの文字化けした文字だけ削除...
-
PHPで複数ファイルのダウン...
-
CFileDialogの最初のディレクト...
-
絶対パス?絶対アドレス?意味...
-
コマンドプロンプトで添付ファ...
-
1行目の#! "C:\\xampp\\php\\p...
-
URLが.PHPってどういう...
-
OpenGLで描いて画像ファイル出力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPのif文でその処理を途中で抜...
-
PHPが処理を途中でやめる。原因...
-
phpの処理中に画面表示ををする...
-
PHPExcel処理速度が遅い
-
関数の前にアットマークが付く場合
-
csvファイルの読込みとソート
-
インスタンス化に伴うメモリ消...
-
プログラム内で処理中断後も継...
-
Cronで同じ処理を複数同時に実...
-
PHPで偶数と奇数を判断するには
-
条件分岐 if(elseif) switchの...
-
ページの一部だけリロード
-
PHPから別のHTML(PHP)へリン...
-
入れ子になっているHTMLタグも...
-
web画面から呼び出したphp処理...
-
3の倍数の和
-
Smartyにて、文字検索
-
PHP内、ボタン押下と同時にリロ...
-
アクセスクライアントごとにタ...
-
タイムアウト処理?となる
おすすめ情報