phpによるデータベースへのアクセスまとめ
自身の備忘録です。
1.データを1つ(テーブル上の1レコード)だけ取得する方法。
基本的には単一だろうが複数だろうが同じ。『FETCH~』の部分が異なるので要注意。『$dbh』というDBconnect変数については既に用意されている体で話を進める。
これを用意する方法についてはこちらを参照。
$sql = "SELECT * FROM hogetable WHERE id = :id"; $stmt = $dbh->prepare($sql); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); print $result[name]; print $result[address]; print $result[sex];
2.複数データを取得する場合
複数データの場合、以下のように基本的にループで回す。$sql = "SELECT * FROM hogetable WHERE category = :category"; $stmt = $dbh->prepare($sql); $stmt->bindParam(':category', '値', PDO::PARAM_STR); $stmt->execute(); $result = $stmt->fetchAll(); $array = $result; /* データ内容を表示 */ foreach($array as $row){ print '<h4><a href="'.$row[url].'">'.$row[title].'</a></h4>'; }
3.Insert句
基本的には検索時と同様。トランザクションの制御とそれに伴うtrycatchが特徴。try{ $dbh->beginTransaction(); /* 登録 */ $sql="INSERT INTO $table(category) VALUES (:category)"; $stmt = $dbh->prepare($sql); $stmt->bindParam(':category', $category, PDO::PARAM_STR); $stmt->execute(); $dbh->commit(); } catch (Exception $e) { $dbh->rollBack(); echo "失敗しました。" . $e->getMessage(); }