UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#82 PHPPDOを使用してトランザクションを利用し、複数のデータベースへの接続

記入日:2023-03-31 編集日:2023-03-31

PHP PDOを使用してトランザクションを利用し、複数のデータベースへの接続

この記事を読むと(約5分)
PHP PDOを使用してトランザクションを利用し、複数のデータベースへの接続する方法に関して、使用方法がイメージできます。

PDOを使用してトランザクションを利用し、複数のデータベースへの接続

以下がコードの例です。

// データベース接続情報
$db1_host = 'localhost';
$db1_name = 'database1';
$db1_user = 'user1';
$db1_pass = 'pass1';

$db2_host = 'localhost';
$db2_name = 'database2';
$db2_user = 'user2';
$db2_pass = 'pass2';

try {
    // データベース1への接続
    $db1 = new PDO("mysql:host=$db1_host;dbname=$db1_name", $db1_user, $db1_pass);
    $db1->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // データベース2への接続
    $db2 = new PDO("mysql:host=$db2_host;dbname=$db2_name", $db2_user, $db2_pass);
    $db2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // トランザクション開始
    $db1->beginTransaction();
    $db2->beginTransaction();

    // データベース1の処理
    $stmt1 = $db1->prepare("INSERT INTO table1 (col1, col2) VALUES (?, ?)");
    $stmt1->execute(array('value1', 'value2'));

    // データベース2の処理
    $stmt2 = $db2->prepare("UPDATE table2 SET col1 = ? WHERE col2 = ?");
    $stmt2->execute(array('new_value', 'target_value'));

    // トランザクションのコミット
    $db1->commit();
    $db2->commit();

} catch(PDOException $e) {
    // トランザクションのロールバック
    $db1->rollBack();
    $db2->rollBack();

    // エラーメッセージの表示
    echo "Error: " . $e->getMessage();
}

// データベース接続の切断
$db1 = null;
$db2 = null;

このコードでは、まずPDOを使用してデータベース1とデータベース2に接続します。それぞれのデータベースに対してトランザクションを開始し、それぞれの処理を行います。最後に、トランザクションをコミットしてデータベース接続を切断します。トランザクション中にエラーが発生した場合は、トランザクションをロールバックし、エラーメッセージを表示します。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。