はじめに
- プリペアドステートメントを利用してデータベースに値を挿入する方法について本やネットの情報から調べて理解したことをまとめました。
- もし、書いていることに何か間違いがある場合はご指摘いただけると嬉しいです。
- 以下のようなデータベースとテーブルがあると仮定して解説します。
データベース名: test_db1
テーブル名: user
name | |
---|---|
- | - |
プリペアドステートメントを利用してデータベースに値を挿入するにはINSERT INTO
を使います
- データベースに値を挿入するには
INSERT INTO
を使います。 -
INSERT INTO
とは、データベースにレコードを挿入するためのSQL文です。
INSERT INTOの書き方
INSERT INTO テーブル名 (カラム名, カラム名, カラム名) VALUES (値, 値, 値);
解説
-
INSERT INTO
という命令を書いてからテーブル名を指定します。 - 次に、テーブル名を指定して、
()
にカラム名を並べていきます。 - 最後に
VALUES
と書いて、()
に挿入するレコードの値を順番に入れていきます。(カラム名と値は同じ順番に書きます)
コード例
<?php
$user = "ここにユーザー名が入ります";
$password = "ここにパスワードが入ります";
$dbh = new PDO("mysql:host=localhost; dbname=test_db1; charset=utf8", "$user", "$password");
$stmt = $dbh->prepare("INSERT INTO user (name, email) VALUES (:name, :email)");
$stmt->execute(array(':name' => '太郎',':email' => 'taro@taro.taro'));
実行結果
データベース名: test_db1
テーブル名: user
name | |
---|---|
太郎 | taro@taro.taro |
解説
$dbh = new PDO("mysql:host=localhost; dbname=test_db1; charset=utf8", "$user", "$password");
new PDO()
でデータベースに接続します。データベース接続について詳しくはこちらに書いてます。
$stmt = $dbh->prepare("INSERT INTO user (name, email) VALUES (:name, :email)");
-
:name
:email
は名前付きプレースホルダと呼びます。変化する値の部分を確保するものです。 -
$dbh->prepare()
でPDO::prepareメソッドを使ってSQL文を実行する準備をします。
$stmt->execute(array(':name' => '太郎',':email' => 'taro@taro.taro'));
- プリペアドステートメントを実行するには、PDOStatement::executeメソッドを使います。
-
execute()
に挿入する値を配列に格納して実行することで、データベースにデータが挿入されます。