LoginSignup
1
5

More than 3 years have passed since last update.

【PDO】プリペアドステートメントを利用してデータベースに値を挿入する方法

Posted at

はじめに

  • プリペアドステートメントを利用してデータベースに値を挿入する方法について本やネットの情報から調べて理解したことをまとめました。
  • もし、書いていることに何か間違いがある場合はご指摘いただけると嬉しいです。
  • 以下のようなデータベースとテーブルがあると仮定して解説します。

データベース名: test_db1
テーブル名: user

name email
- -

プリペアドステートメントを利用してデータベースに値を挿入するには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 email
太郎 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()に挿入する値を配列に格納して実行することで、データベースにデータが挿入されます。
1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5