こしあん日記 ~写真と猫とサッカーと~

子供たちの記録用にはじめたが、思春期になり写真を撮らせてもらえなくなる。写真と愛猫とサッカーが中心のブログです。

mysqliクラスを利用したDB連携処理の覚書(その2)

前回備忘録でDB処理の覚書を書いたが、その2を書こう書こうと思いつつ、つい面倒で放置。すると記憶の忘却の彼方へ旅立ってしまいそう。
何とか記憶を手繰り寄せ、その2を。
こちらが前回の記事。
cosian.hatenablog.com

今回はプリペアードステートメントの処理と、INSERT、UPDATEの処理を。

プリペアドステートメントを使ったデータの抽出

前回の記事で書いたように

$result = $stmt->get_result();
$aaaa = $result->fetch_all(); 

でSELECTで取得したDBの情報を$aaaaに配列で情報を入れれるが、

$result = $stmt->get_result();
$aaaa = $result->fetch_all(MYSQLI_ASSOC); 

とすることで、連想配列にできる。この方がカラム名指定ができるので、より使いやすくなる。

また、特定の変数だけを取得する場合は

$stmt->bind_result($aaaa);
$stmt->fetch();

とすることで、SELECTで取り出した値を$aaaaに入れることができる。

複数のレコードを特定の条件で取得する場合は、SELECTでテーブルの情報をごっそり取得し、

$result = $stmt->get_result();
$aaaa = $result->fetch_all(MYSQLI_ASSOC); 

で$aaaaからfor文などで条件指定をして取り出す方法と

for (条件) {
$stmt = $mysqli -> prepare("SELECT * FROM テーブル名 WHERE id = ?");
$stmt->bind_param("i", $bbbb);
$stmt->execute();
$stmt->bind_result($aaaa[]);
$stmt->fetch();
$stmt->close();
}

SQL文をfor文内に入れ、取得したレコード順に変数$aaaaに格納する方法がある。
$aaaa[]とすることで配列になるので、繰り返し値を挿入できる。

データの挿入(INSERT文)

データベースに新しい情報(レコード)を追加する場合はINSERTを使う。

"INSERT INTO テーブル名(挿入するカラム名) VALUES(挿入する情報)"

基本的な書式はSELECTと同じになる。
挿入時は、特に変数の値を入れることが多いので、プリペアードステートメントはほぼ必須になる。

データの更新(UPDATE文)

データの更新(変更)時はUPDATEを使う。

"UPDATE テーブル名 SET 変更するカラム名 = 変更する値 WHERE 抽出条件"

以上。