DBを作る3(PDOのprepare)

PDOでSQLの実行する手段3つ。
1. exec(); 結果を返さない。安全なSQLに使う。
2. query(); 結果を返す、安全なSQL、1度だけ実行されるSQLに使う。
3. prepare(); 結果を返す。安全対策が必要なSQL(ユーザに入力させるなど)
        複数回実行されるSQLに使う。SQLをキャッシュしてくれるので、
        SQLを拘束する。

■prepareを使う。

<?php
//定数に設定する
define('DB_DATABASE', 'pan_db');
define('DB_USERNAME', 'dbuser');
define('DB_PASSWORD', 'password');
//PDOに接続する為のDSN(データソースネーム)。データベースの名前を渡してあげる。
define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' .DB_DATABASE);

//基本try catchで書いていく。
try{
   //connect
   $db=new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
   //Eroorが発生したらExceptionを出す。
   $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   
   //★prepareはステートメントオブジェクトを返す。valuesはとりあえず?にする。
  $stmt= $db->prepare("isert into user(name,aaa)" values (?,?)");
   //ステートメントオブジェクトにはexecuteメソットがあり、配列を渡すと、
  //?に安全に形で埋め込み実行してくれる。
   $stmt->execute(['hana'. 56]);

   //挿入したレコードのIDを引っ張ってくる。
  echo "inserted:". $db->lastInsertId();

 
}catch(PDOException $e){
   //例外が発生したら、例外のメッセージを出力し終了
   echo $e->getMessage();
   exit;
}
?>