2017.1.16
PHPでデータベースを使う時、今までのmysql〜系のコードは非推奨になっていました(知らなかった汗)代わりにPDOと呼ばれる作り方が用意されています。まずは基本的な部分を勉強していきたいと思います。
お決まりのコードがあるようです。try〜catchでエラーなどに対応した状態になっています。
データベース名やパスワードなどは、外部に逃がして中身に固有の情報が入らないようにすると、あとからメンテナンスが便利なのは同じですね。
try{
$db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//ここにコードを記述していく
}catch (PDOException $e) {
echo $e->getMessage();
exit;
}用途に応じてコメンドが変わる
データベースにコマンドを送る時は、セキュリティに配慮しなければいけません。PDOでは、以下のように用途に応じてコマンドを使い分けるようです。
- exec(): 結果を返さない、安全なSQL
- query(): 結果を返す、安全、何回も実行されないSQL
- prepare(): 結果を返す、安全対策が必要、複数回実行されるSQL
この使い分けを見る限り、queryとprepareを使う事が大半なのかな、と思いました。exec()は、内部処理に使うのかな?
データベースは、追加、編集、削除などありますが、基本的には以下のような動きになるでしょうか。
【上記コードの続きです】
//ここにコードを記述していく
$stmt = $db->query("select * from users");
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user) {
var_dump($user);
}
PDOを正しく使えば、データベースに関するセキュリティ対策をいい感じにやってくれるそうなので、シンプルでいいですね。
今回はPHPを直書きしていましたが、ここにクラスの概念が関わってくると、コードが細かく分散・分割されていきます。クラスの書き方も、ネームスペースという考え方が加わって、今までとは変わっているので、こちらも勉強していきたいですね。