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テーブルに追加されます。
この記事が気に入ったらサポートをしてみませんか?