PHPでXAMPPのMySQL(MariaDB)へ接続してデータを取得するサンプルです。
select文を使用します。
確認環境 ・PHP 7.1.8 ・XAMPP 7.1.8 ・Windows 10 |
目次
XAMPPの環境
XAMPPのMySQLを使用します。
XAMPPのインストール方法はこちらを御覧ください。
ローカルにPHPが動く環境を作る手順(XAMPP)
データベースとテーブルの作成
1.XAMMPのMySQLにデータベース、テーブルを作成しておく必要があります。
作成方法はこちらを御覧ください。
XAMPPのphpMyAdminでDB作成からデータ取得までのサンプル
2.以下のテーブルのデータを取得します。テーブル名は「fish」です。
サンプルコード
サンプルのコードです。
<?php
// DB接続情報
$dsn = 'mysql:host=localhost;dbname=testphp;charset=utf8mb4';
$username = 'root';
$password = '';
// try-catch
try{
// データベースへの接続を表すPDOインスタンスを生成
$pdo = new PDO($dsn,$username,$password);
// SQL文
$sql = 'select * from fish';
// データを取得
$stmt = $pdo->query($sql);
$stmt -> execute();
// 1行ずつ取得
while($rec = $stmt->fetch(PDO::FETCH_ASSOC)){
// テーブルの項目名を指定して値を表示
print htmlspecialchars($rec['id']);
print htmlspecialchars($rec['name']);
print htmlspecialchars($rec['romaji']);
print '<br />';
}
// 接続を閉じる
$pdo = 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::queryのリンクです。
http://php.net/manual/ja/pdo.query.php
以下はPHPマニュアルのPDOStatement::fetchのリンクです。
http://php.net/manual/ja/pdostatement.fetch.php
結果
上記コードを実行した結果です。データを取得しています。
例外発生時
MySQLを起動せずに上記コードを実施した場合は、36行目のcatchのロジックが実行され、以下のエラーメッセージが表示されます。
SQLSTATE[HY000] [2002] 対象のコンピューターによって拒否されたため、接続できませんでした。 |
try-catchを記述しなかった場合は、以下のエラーメッセージが表示されます。
Fatal error: in D:\xampp\htdocs\testPHP\index.php on line 17 |
以下はPHPマニュアルのmb_convert_encodingのリンクです。
http://php.net/manual/ja/function.mb-convert-encoding.php
プレースホルダを使用する
上記コードを修正してプレースホルダを使用するサンプルです。
プレースホルダ
- SQL文中の(?)がプレースホルダです。
- SQL文中の(:名称)が名前付きプレースホルダです。
- 動的に値をセットできます。
- 入力される不正な文字を抑止できるのでSQLインジェクション対策になります。
- 固定文字列のSQLの部分がプリコンパイルされるので実行速度が上がります。
サンプル
15行目は、名前付きプレースホルダを使用したSQLです。(:名称)の箇所が名前付きプレースホルダです。
20行目は、7行目の変数を15行目のプレースホルダにバインドしています。
<?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);
// SQL文 :idは、名前付きプレースホルダ
$sql = "select * from fish where id = :id";
// データを取得
$stmt = $pdo->prepare($sql);
// プレースホルダと変数をバインド
$stmt -> bindParam(":id",$id);
$stmt -> execute();
// 1行ずつ取得
while($rec = $stmt->fetch(PDO::FETCH_ASSOC)){
// テーブルの項目名を指定して値を表示
print htmlspecialchars($rec['id']);
print htmlspecialchars($rec['name']);
print htmlspecialchars($rec['romaji']);
print '<br />';
}
// 接続を閉じる
$pdo = null;
}catch (PDOException $e) {
// UTF8に文字エンコーディングを変換します
echo mb_convert_encoding($e->getMessage(),'UTF-8','SJIS-win');
die();
}
?>
結果は、「3 まぐろ maguro」が出力されます。
関連の記事
PHP フォームからMySQLへ接続してselectするサンプル
PHP MySQLへ接続してinsert/update/deleteするサンプル
ローカルにPHPが動く環境を作る手順(XAMPP)
PHP フォームの値をsubmitするサンプル
XAMPPのphpMyAdminでDB作成からデータ取得までのサンプル