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; } ?>