PHP MySQLへ接続してinsert/update/deleteするサンプル

PHPでXAMPPのMySQL(MariaDB)へ接続してinsert/update/deleteするサンプルです。

確認環境
・PHP 7.1.8
・XAMPP 7.1.8
・Windows 10

目次

XAMPPの環境

XAMPPのMySQLを使用します。
XAMPPのインストール方法はこちらを御覧下さい。
ローカルにPHPが動く環境を作る手順(XAMPP)

データベースとテーブルの作成

1.XAMMPのMySQLにデータベース、テーブルを作成しておく必要があります。
作成方法はこちらを御覧下さい。
XAMPPのphpMyAdminでDB作成からデータ取得までのサンプル

2.以下の「fish」テーブルを更新します。ストレージエンジンはInnoDBです。

カラムの「id」は、自動採番(AUTO_INCREMENT)にしています。

insert

insertのサンプルのコードです。
23行目は、名前付きプレースホルダを使用したSQLです。(:名称)の箇所が名前付きプレースホルダです。
29,30行目は、7,8行目の変数を23行目のプレースホルダにバインドしています。

<?php
// DB接続情報
$dsn = 'mysql:host=localhost;dbname=testphp;charset=utf8mb4';
$username = 'root';
$password = '';

$name = 'まぐろ';
$romaji = 'maguro';

// try-catch
try{
	// データベースへの接続を表すPDOインスタンスを生成
	$dbh = new PDO($dsn,$username,$password);

	// 静的プレースホルダを指定
	$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

	// DBエラー発生時は例外を投げる設定
	$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


	// SQL文 :nameと:romajiは、名前付きプレースホルダ
	$stmt = $dbh->prepare("INSERT INTO fish(name,romaji) VALUES (:name, :romaji)");

	//トランザクション処理
	$dbh->beginTransaction();

	try{
		$stmt->bindParam(':name', $name);
		$stmt->bindParam(':romaji', $romaji);
		$stmt->execute();

		//コミット
		$dbh->commit();

	}catch (PDOException $e) {
		//ロールバック
		$dbh->rollback();
		throw $e; //
	}
	// 接続を閉じる
	$dbh = null;
}catch (PDOException $e) {
	// UTF8に文字エンコーディングを変換します
	echo mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win');
	die();
}
?>

以下はPHPマニュアルのPDOの接続、および接続の管理のリンクです。
http://php.net/manual/ja/pdo.connections.php

以下はPHPマニュアルのPDO::setAttributeのリンクです。
http://php.net/manual/ja/pdo.setattribute.php

以下はPHPマニュアルのPDO::begintransactionのリンクです。
http://php.net/manual/ja/pdo.begintransaction.php

 

update

updateのサンプルのコードです。
23行目は、名前付きプレースホルダを使用したSQLです。(:名称)の箇所が名前付きプレースホルダです。
29,30行目は、7,8行目の変数を23行目のプレースホルダにバインドしています。

<?php
// DB接続情報
$dsn = 'mysql:host=localhost;dbname=testphp;charset=utf8mb4';
$username = 'root';
$password = '';

$name = 'まぐろ2';
$id = 3;

// try-catch
try{
	// データベースへの接続を表すPDOインスタンスを生成
	$pdo = new PDO($dsn,$username,$password);

	// 静的プレースホルダを指定
	$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

	// DBエラー発生時は例外を投げる設定
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


	// SQL文 :nameと:idは、名前付きプレースホルダ
	$stmt = $pdo->prepare("UPDATE fish SET name=:name WHERE id=:id");

	//トランザクション処理
	$pdo->beginTransaction();

	try{
		$stmt ->bindParam(':name', $name);
		$stmt ->bindParam(':id', $id);
		$stmt->execute();

		//コミット
		$pdo->commit();

	}catch (PDOException $e) {
		//ロールバック
		$pdo->rollback();
		throw $e; //
	}
	// 接続を閉じる
	$pdo = null;
}catch (PDOException $e) {
	// UTF8に文字エンコーディングを変換します
	echo mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win');
	die();
}
?>

 

delete

deleteのサンプルのコードです。
23行目は、名前付きプレースホルダを使用したSQLです。(:名称)の箇所が名前付きプレースホルダです。
29行目は、7行目の変数を23行目のプレースホルダにバインドしています。

<?php
// DB接続情報
$dsn = 'mysql:host=localhost;dbname=testphp;charset=utf8mb4';
$username = 'root';
$password = '';

$id = 3;


// try-catch
try{
	// データベースへの接続を表すPDOインスタンスを生成
	$pdo = new PDO($dsn,$username,$password);

	// 静的プレースホルダを指定
	$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

	// DBエラー発生時は例外を投げる設定
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


	// SQL文 :idは、名前付きプレースホルダ
	$stmt = $pdo->prepare("DELETE FROM fish WHERE id=:id");

	//トランザクション処理
	$pdo->beginTransaction();

	try{
		$stmt ->bindParam(':id', $id);
		$stmt->execute();

		//コミット
		$pdo->commit();

	}catch (PDOException $e) {
		//ロールバック
		$pdo->rollback();
		throw $e; //
	}
	// 接続を閉じる
	$pdo = null;
}catch (PDOException $e) {
	// UTF8に文字エンコーディングを変換します
	echo mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win');
	die();
}
?>

関連の記事

PHP MySQLへ接続してselectするサンプル
PHP フォームからMySQLへ接続してselectするサンプル
ローカルにPHPが動く環境を作る手順(XAMPP)
PHP フォームの値をsubmitするサンプル
XAMPPのphpMyAdminでDB作成からデータ取得までのサンプル

△上に戻る