PDOを継承したMySQL接続クラスのサンプルを元に、PDOの基本的な使い方
今ここに、PDOを継承したMySQL接続クラスのサンプルを元に、PDO
の基本的な使い方をまとめてみたのでメモしておく(Φω|
[MySQL接続クラスサンプル]
class TestDbConnection() extends PDO
{
const DSN = "mysql:host='xxx.xxx.xxx.xxx;dbname=mydb;charset=utf8";
const USER = 'test-user';
const PASSWORD = 'test-user2020';
public function __construct()
{
parent::__construct(self::DSN,self::USER,self::PASSWORD);
$this->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
(ex)データ抽出
$query = "SELECT * FROM User";
try {
$dbh = new TestDbConnection();
$stmt = $dbh->prepare($query);
$stmt->execute();
// 取得した内容を表示
while( $row = $stmt->fetch(PDO::FETCH_ASSOC) ){
// 実行結果から1レコード取ってくる
$id = $row['id'];
$lv = $row['lv'];
$exp = $row['exp'];
$money = $row['money'];// 表示する
printf("%d, %d, %d, %d\n", $id, $lv, $exp, $money);
}} catch (PDOException $e) {
printf("[Error] %s¥n", $e->getMessage());
}
(ex)データ挿入/insert :: 疑問符プレースホルダ
$query = 'INSERT INTO User(lv, exp, money) VALUES(:lv,:exp,:money)';
try {
$dbh = new TestDbConnection();
$stmt = $dbh->prepare($query);
// プレースホルダに値を入れる
$stmt->bindValue(':lv', $lv, PDO::PARAM_INT);
$stmt->bindValue(':exp', $exp, PDO::PARAM_INT);
$stmt->bindValue(':money', $money, PDO::PARAM_INT);// 実行
$stmt->execute();
} catch( PDOException $e ) {
printf("[Error] %s¥n", $e->getMessage());
}
(ex)データ更新/update :: 疑問符プレースホルダ
$query = 'UPDATE User SET money=money-:price WHERE id=:userid';
try {
$dbh = new TestDbConnection();
$stmt = $dbh->prepare($query);
$stmt->bindValue(':price', GACHA_PRICE, PDO::PARAM_INT);
$stmt->bindValue(':userid', $uid, PDO::PARAM_INT);
$stmt->execute();
} catch( PDOException $e ) {
printf("[Error] %s¥n", $e->getMessage());
}
[参考サイト]