SQLの実行 PDOオブジェクト、PDO Statementオブジェクト

PDOオブジェクト

データベースに接続するためのオブジェクトであり、query関数を使うことでクエリを実行し、PDO Statementオブジェクトを取得できる。

プレースホルダーを使用したクエリを実行するには、PDOオブジェクトを使用してPDOStatementオブジェクトを取得し、その後、それを使用してクエリを実行する。

以下例

// データベース情報
$dbHost = 'localhost';
$dbName = 'database_name';
$dbUser = 'username';
$dbPass = 'password';

// PDOインスタンスの作成(データベースへの接続)
$pdo = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPass);

// エラーモードと例外処理の設定
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 実行するクエリ
$query = "SELECT * FROM users";

// クエリを実行し、PDOStatementオブジェクトを取得
$statement = $pdo->query($query);


PDO Statementオブジェクト

PHPからSQLを実行する際、プレースホルダーを使って、実行することがほとんどだと思う。

prepareやexcuteはPDOオブジェクトから取得したステートメントに対して使用するものであり、PDO Statementクラスのものである。

$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $db->prepare($sql); // SQLを準備

$params = array(':id' => 1); // パラメータ
$stmt->execute($params); // クエリを実行

queryを実行することで、PDO Statementオブジェクトが取得できる。

// 実行するクエリ
$query = "SELECT * FROM users";

// クエリを実行し、PDOStatementオブジェクトを取得
$statement = $pdo->query($query);

// 結果の取得
$result = $statement->fetchAll(PDO::FETCH_ASSOC);

実際は、try catchなどで例外処理するが、簡単に書くとこうなる。

この際使用されているのが、PDO Statementオブジェクトである。

PDO Statementオブジェクトでは、

クエリを実行する場合には、準備されたステートメントを実行するために

executeメソッドを使用する。

PDO Statementオブジェクトで使用できる主要なメソッドは。

  • excute(): 準備されたステートメントを実行する。
  • fetch(): 結果セットから次の行を取得する。
  • fetchAll(): 結果セットから全ての行を取得する。
  • rowCount(): 直近のSELECT文で取得された行の数を返す。
  • その他、エラー情報を取得するためのメソッドなどがある。

以上がPDO Statementオブジェクトの概要である。