[PHP]PDO備忘録

<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
$user = 'root';
$password = 'password';

try {
    $pdo = new PDO($dsn, $user, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // エラーモードを例外に設定
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // デフォルトのフェッチモードを連想配列に
    ]);
    echo "接続成功";
} catch (PDOException $e) {
    echo "接続失敗: " . $e->getMessage();
}
?>

 

$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':id', 1, PDO::PARAM_INT);
$stmt->execute();
$result = $stmt->fetch();

print_r($result);

 

$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':name', '田中 太郎', PDO::PARAM_STR);
$stmt->bindValue(':email', 'taro@example.com', PDO::PARAM_STR);
$stmt->execute();
echo "データを挿入しました";

 

try {
    $pdo->beginTransaction();

    $pdo->exec("UPDATE users SET balance = balance - 100 WHERE id = 1");
    $pdo->exec("UPDATE users SET balance = balance + 100 WHERE id = 2");

    $pdo->commit();
    echo "トランザクション成功";
} catch (Exception $e) {
    $pdo->rollBack();
    echo "トランザクション失敗: " . $e->getMessage();
}