LoginSignup
0

More than 1 year has passed since last update.

[PHP]PDOによるデータベース接続

Last updated at Posted at 2022-01-20

PHPのデータベース接続

PHPでデータベースに接続する方法は調べたかがり3種類ある
1. mysql_connectによる接続
2. mysqli_connectによる接続
3. 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部分をわけるとさらに良くなりそう。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0