PHP のPDO (MySQL) を使うサンプル001

PHPの PDO を使ってMySQLのレコードを操作するサンプルです。

サーバー上には以下のテーブルが作成してあります。

CREATE TABLE `fruit` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `colour` varchar(32) DEFAULT NULL,
  `calories` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
動作サンプル

操作

説明

  • [レコードを作成する]ボタン → [レコードを取得して表示する]ボタンの順番で実行すると、作成したレコードが表示されます。
  • [レコードを全て削除する]ボタン → [レコードを取得して表示する]ボタンの順番で実行すると、レコードが表示されなくなります。
コード

DBへの接続

$options = array(
  // 静的プレースホルダを指定
  PDO::ATTR_EMULATE_PREPARES => false,
  // エラー発生時に例外を投げる
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
// 複文を禁止する (この定数は、PHPのバージョン 5.5.21 および PHP 5.6.5 以上で使用できる)
if (defined('PDO::MYSQL_ATTR_MULTI_STATEMENTS')) {
  $options[PDO::MYSQL_ATTR_MULTI_STATEMENTS] = false;
}

// charset は set names でセットせず、この第1引数で指定すること(PHP5.3.6以降で可能)
$dbh = new PDO('mysql:host=localhost;dbname=foo;charset=utf8',
        'username', 'password', $options);

レコードを作成する

$stmt = $dbh->prepare("INSERT INTO fruit (name, colour, calories) VALUES (:name, :colour, :calories)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':colour', $colour);
$stmt->bindParam(':calories', $calories);

// 1つ目のレコード
$name = 'banana';
$colour = 'yellow';
$calories = 150;
$stmt->execute();

// 2つ目のレコード
$name = 'apple';
$colour = 'red';
$calories = 120;
$stmt->execute();

// 3つ目のレコード
$name = 'orange';
$colour = 'orange';
$calories = 130;
$stmt->execute();

レコードを全て削除する

$sth = $dbh->prepare("DELETE FROM fruit");
$sth->execute();

レコードを取得する

$arrRowObj = [];
$sth = $dbh->prepare("SELECT name, colour, calories FROM fruit");
$sth->execute();
while ($row = $sth->fetchObject()) {
    array_push($arrRowObj, $row);
}

参考

ソースコード