質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

トランザクション

トランザクションとは、関連・依存する処理を一連の不可分な処理単位として扱う処理方式を指します。トランザクションとして管理された処理は「すべて成功」か「すべて失敗」のいずれかであることが保証される。処理に失敗した場合は、一連の処理がロールバックされます。

解決済

トランザクション処理が失敗しても通ってしまいます

kaito2414
kaito2414

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

トランザクション

トランザクションとは、関連・依存する処理を一連の不可分な処理単位として扱う処理方式を指します。トランザクションとして管理された処理は「すべて成功」か「すべて失敗」のいずれかであることが保証される。処理に失敗した場合は、一連の処理がロールバックされます。

2回答

0リアクション

0クリップ

387閲覧

投稿2020/05/11 02:11

編集2020/05/11 03:58

トランザクション処理が失敗しても通ってしまいます。
1つ目は成功、2つ目は失敗にしていますが、2が失敗しても1はそのまま実行されてしまいます。
参考サイト

環境:MYSQL

2つ目のインサート文は引数があっていません

php

<?php // DB情報 $dbh = null; $db_admin = "sbiccicms_admin_local_auto"; $db_common = "sbiccicms_common_local_auto"; $db_front = "sbiccicms_front_local_auto"; $user = 'root'; $pass = ''; try { // DB接続 $dbh = new PDO('mysql:host=127.0.0.1; dbname='. $db_admin.'; charset=utf8', $user, $pass); //例外処理を投げる(スロー)ようにする $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // トランザクション開始 $dbh->beginTransaction(); $table_cp = 'create table test_import like site_configs'; $table_create = $dbh->query($table_cp); $table_cp = 'create table error like site_configs'; $table_create = $dbh->query($table_cp); $insert_site_configs = "INSERT INTO test_import (site_url, site_name, wrt_user_id, created, modified) VALUES ('CCI', 'CCIホーム', 99, cast(now() as datetime),cast(now() as datetime))"; $insert_users_check = $dbh->query($insert_site_configs); $insert_site_configs = "INSERT INTO error (site_url, site_name, wrt_user_id, created, modified) VALUES ('CCIホーム', 99, cast(now() as datetime),cast(now() as datetime))"; $insert_users_check = $dbh->query($insert_site_configs); // コミット $dbh->commit(); } catch (PDOException $e) { // ロールバック $dbh->rollBack(); echo 'DB接続エラー:' . $e->getMessage(); die(); } catch (Throwable $e) { echo "ロールバック"; // ロールバック $dbh->rollBack(); echo '失敗:' . $e->getMessage(); die(); } // DB接続終了 $dbh = null; ?>

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

javahack

2020/05/11 03:14

プログラムで動的にテーブルを作成するのは、ほとんどの場合設計が間違っています。 設計を見直した方が良いです。
kaito2414

2020/05/11 03:19

テーブル作成は、php側でやらないほうがいいということでしょうか
javahack

2020/05/11 04:00

・設計段階でテーブル構成を決定 ・運用開始前に設計に従いテーブルを作成 ・運用中はレコードの操作のみでテーブル構成は基本的には触らない 非常に雑なフローですが、多くのシステムは上記のような流れで作られていると思います。
m.ts10806

2020/05/11 04:04

回答依頼いただきましたが、既についた回答で進めることは可能かと思います。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

トランザクション

トランザクションとは、関連・依存する処理を一連の不可分な処理単位として扱う処理方式を指します。トランザクションとして管理された処理は「すべて成功」か「すべて失敗」のいずれかであることが保証される。処理に失敗した場合は、一連の処理がロールバックされます。