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
$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);
}