解決済み
where条件の変数がint型になっていなかった為、sqlが不正な動作をした?
int型に変数をキャストしたところ、正常にUPDATEが走った
ご回答頂きありがとうございました。
経緯
PHP学習中の初心者です。
現在PHPで「指定されたID(PK)のデータを更新する」という関数を作成しようとしています。
PHP
1 //-------------------------------- 2 // タスク情報を更新する 3 //-------------------------------- 4 public function updateEntity($param_user_id, $param_limit_date, $param_task_type, $param_title, $param_task_status){ 5 6 7 try{ 8 // インスタンス生成(データベース接続を行うクラス) 9 $pdo = new dbAccessSetup(); 10 $db = $pdo->beginPdoAccess(); 11 12 try{ 13 14 // 現在日時生成 15 $sys_date = date('Y/m/d H:i:s'); 16 17 // 18 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 19 20 // トランザクション開始 21 $db->beginTransaction(); 22 23 // プレースホルダを用いたアップデート文生成と実行 24 $wkPlaseHolderQuery = $db->prepare('update T_TASK set TASK_TYPE =:type, TITLE =:title, LIMIT_DATE =:limit_date, TASK_STATUS =:status, KOUSHIN_DT =:koushin_dt where USER_ID =:user_id;'); 25 $wkPlaseHolderQuery->bindParam(':type', $param_task_type, PDO::PARAM_STR, 80); 26 $wkPlaseHolderQuery->bindParam(':title', $param_title, PDO::PARAM_STR, 300); 27 $wkPlaseHolderQuery->bindParam(':limit_date', $param_limit_date, PDO::PARAM_STR, 10); 28 $wkPlaseHolderQuery->bindParam(':status', $param_task_status, PDO::PARAM_STR, 1); 29 $wkPlaseHolderQuery->bindParam(':koushin_dt', $sys_date, PDO::PARAM_STR, 19); 30 $wkPlaseHolderQuery->bindParam(':user_id', $param_user_id, PDO::PARAM_INT); 31 // ★A ここまでは来る 32 $wkPlaseHolderQuery->execute(); 33 // ★B ここにも来る 34 35 // コミット 36 $db->commit(); 37 // ★C ここにも来る 38 39 }catch(Exception $param_rollback_ex){ 40 // ロールバック 41 $db->rollBack(); 42 throw new Exception(); 43 } 44 45 }catch(Exception $param_ex){ 46 print '【システムエラー】'; 47 } 48 49 }
(1)引数に値が入ってきて、
(2)UPDATE文を作成し
(3)実行し、コミットする
という流れの関数で、★ABCのいずれにも来ている事は確認できているのですが、
実データがUPDATEされていません。
何が悪さをしているのか、コードを書き換えて試してもみましたが、
解決出来ず困っています。
何が原因か心当たりのある方がいれば、ご教示頂ければ幸いでございます。
【前提条件】
- テーブル名、およびカラム名は間違えていません。(名前は仮のものです)
- dbAccessSetupクラスでは正常にDB接続が行われています。
- 引数には全て、必ず値が入ります。
- PHP5.3を使用。
- MySQLを使用。
実現したいこと
UPDATEを実データに反映させたい。
以上、何卒宜しくお願いいたします。
修正依頼に対する追記
- PHPバージョン 3.5→ 5.3の誤りでした。大変失礼致しました。
- コードを修正いたしました。Exceptionにて、
PHP
1 }catch(Exception $param_ex){ 2 print '【システムエラー】' . $param_ex->getMessage(); 3 exit; 4 }
と改めましたが、例外処理ではキャッチできていないようです。
回答3件
あなたの回答
tips
プレビュー