PHPのデータベース接続
PHPでデータベースに接続する方法は調べたかがり3種類ある
- mysql_connectによる接続
- mysqli_connectによる接続
- PDOによる接続
1.の接続方法はPHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されたので、使うのは避けた方がいい。
https://www.php.net/manual/ja/function.mysql-connect.php
ちなみに使用PHPのバージョンは7.4.27。XAMMPを立ち上げて、そこにPHPから接続する。今回は2.のPDOによる方法でデータベースに接続する。
ファイル構成
ファイルは以下の感じ。
db_connect/
config.php // DB情報
dbConnect.php // DB接続
select_view.php // DBからデータを取得して表示
データベースに接続
簡単なデータベースを作成
テーブル名: test
+--+------+--------+
|id|title |content |
+--+------+--------+
| 1|TITLE1|content1|
| 2|TITLE2|content2|
+--+------+--------+
config.phpにデータベースに接続するための情報を記述。
config.php
<?php
// データベースの情報
define('DB_HOST', 'localhost'); // ホスト名
define('DB_NAME', 'test'); // データベース名
define('DB_USER', 'root'); // ユーザー名
define('DB_PASS', 'pass'); // パスワード
dbConnect.phpに接続するコードを書いていく。
dbConnect.php
<?php
// 設定ファイルの読み込み
require_once ('config.php');
function dbConnect(){
global $pdo, $e;
$host = DB_HOST; // ホスト名
$dbname = DB_NAME // データベース名
$dns = 'mysql:host=' . $host . ';dbname = ' . $dbname . ';charset=utf8';
$user = DB_USER; // ユーザー名
$pass = DB_PASS; // パスワード
try
{
$pdo = new PDO(
$dns,
$user,
$pass,
[
// オプション
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // 例外をスロー
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // カラム名をキーとする連想配列で取得
]
);
} catch (PDOException $e) {
header('Content-Type: text/plain; charset=UTF-8', true, 500);
exit($e->getMessage());
}
}
オプションなどは以下の記事を参考に記述
PHPでデータベースに接続するときのまとめ
データベースから取り出して、表示。
select_view.php
<?php
// DB接続ファイルの読み込み
require_once ('dbConnect.php');
// DB接続関数呼び出し
$db_conn = dbConnect();
// testテーブルからデータを取得
$sql = 'SELECT * FROM test';
$stmt = $pdo->query($sql);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
// DB切断
$pdo = null;
?>
// HTML
<html>
<head>...</head>
<body>
<h1>値を表示</h1>
<?php foreach($results as $item): ?>
<p><?= $item ?></p>
<?php endforeach; ?>
</body>
</html>
まとめ
PHPでデータベースからデータを取得して表示することができた。
select_view.php
のPHP部分とHTML部分をわけるとさらに良くなりそう。