PHPにてSQL文を書く時のprepare-executeについて【PHP MySQL】

コード

    $dsn = 'mysql:dbname=shop;host=localhost;charset=utf8';
    $user = 'root';
    $password = '';
    $dbh = new PDO($dsn,$user,$password);
    $dbh -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//

    $sql = 'INSERT INTO mst_staff (name,password) VALUES (?,?)';
    $stmt = $dbh -> prepare($sql);
    $data[] = $staff_name;
    $data[] = $staff_pass;
    $stmt -> execute($data);
  $dbh = null;

準備 - 実行prepareがprepare - executeである。

$dbh->prepare($sql)は、準備したSQL文をデータベースに対して「準備」する命令です。この操作により、$sqlで定義されたSQL文がデータベースに送信され、実行の準備が整います。この時点では、プレースホルダー(?)にはまだ具体的な値が設定されていません。このメソッドは、準備されたSQL文(プリペアドステートメント)を表すPDOStatementオブジェクト($stmt)を返します。

$stmt->execute($data)は、準備したSQL文を実際にデータベースで実行する命令です。ここで$data配列を引数として渡すことにより、SQL文のプレースホルダーが$data配列の値($staff_name$staff_pass)で置き換えられ、SQL文が完成します。その後、完成したSQL文がデータベースで実行され、新しいレコードがmst_staffテーブルに追加されます。

この記事が気に入ったらサポートをしてみませんか?