PODとはphp data obujectの略で、データベース接続クラスのことです。 PHPは標準でMySQLやPostgreSQLやSQLiteなど、色々なデータベースに接続するための命令が用意されています。PDOを使うことで、どのデータベースを利用する場合でも同じ関数を使うことができますので、もし将来データベースを変更することがあっても、PDOオブジェクトを作成する時に指定したパラメータだけを変更するばいいことになります。
index.php
<?php define('DB_DATABASE', 'name_db'); define('DB_USERNAME', 'dbuser'); define('DB_PASSWORD', 'xxxx'); define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE); try { $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // insert $db->exec("insert into users (name, score) values('yamada', 55)"); echo "user added!"; // disconnect $db = null; } catch (PDOException $e){ echo $e->getMessage(); exit; }
prepared
<?php define('DB_DATABASE', 'name_db'); define('DB_USERNAME', 'dbuser'); define('DB_PASSWORD', 'xxxx'); define('PDO_DSN', 'mysql:dbhost=localhost;dbname=' . DB_DATABASE); try { $db = new PDO(PDO_DSN, DB_USERNAME, DB_PASSWORD); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); /* (1) exec(): 結果を返さない、安全なsql (2) query(): 結果を返す、安全、何回も実行されない (3) prepare(): 結果を返す、安全対策が必要、複数回実行 */ $stmt = $db->prepare("insert into users(name, score) values(?, ?)"); $stmt->execute(['name', 44]); echo "inserted: " . $db->lastInsertId(); } catch (PDOException $e){ echo $e->getMessage(); exit; }