PHPとMySQLの接続方法

Programing

PHPとデータベース(MySQL)の接続方法について解説します。

事前準備

PHPの設定

Windows環境でPDOを利用するために、「php.ini」の設定が必要です。

変更前;extension=pdo_mysql
変更後extension=pdo_mysql

修正後はIISの再起動をおこない、設定を反映させます。

動作確認

phpinfo()を出力するページを実行してみます。

上記のようにPDO、pdo_mysqlの表示が出ていれば完了です。

PHPとMySQLの接続

PDO(PHP Data Objects)は、PHPからデータベースのアクセスを抽象化してくれるもので、MySQLに限らず、postgresqlやsqliteなどに対応しているため、他のデータベースへの移行が容易になります。

ここでは、PDOを利用した実装を紹介します。

define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');

// DBへ接続
try{
    $dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);

    // クエリの実行
    $query = "SELECT * FROM TABLE_NAME";
    $stmt = $dbh->query($query);

}catch(PDOException $e){
    print("データベースの接続に失敗しました".$e->getMessage());
}

// 接続を閉じる
$dbh = null;

MySQLからデータ取得

SELECT文でデータを取得します。

SELECT フィールド名 FROM テーブル名;

<table border="1">
  <tr>
    <th>
      AAA
    </th>
    <th>
      BBB
    </th>
    <th>
      CCC
    </th>
  </tr>
<?php
define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');
try {
  // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする
  $dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
  
  $sql = "SELECT * FROM TABLE_NAME";
  
  $stmt = $dbh->query($sql);
  foreach($stmt as $record){
    echo "<tr>
          <td>{$record['AAA']}</td>
          <td>{$record['BBB']}</td>
          <td>{$record['CCC']}</td>
          </tr>";
  }
} catch(PDOException $e) {
  echo "エラーメッセージ : " . $e -> getMessage();
}
?>
</table>

MySQLへデータ登録

INSERT文でデータを追加します。

INSERT INTO テーブル名 (フィールド1 [ , フィールド2 , フィールド3 … ]) VALUES (フィールド1の値 [ , フィールド2の値 , フィールド3の値 …] );

<?php
define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');
try {
  // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする
  $dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);

  $sql = "INSERT INTO TABLE_NAM (AAA,BBB,CCC) VALUES ('aaa','bbb','ccc')";
  $stmt = $dbh->query($sql);
} catch(PDOException $e) {
  echo "エラーメッセージ : " . $e -> getMessage();
}
?>

MySQLのデータ削除

DELETE文でデータを削除します。

DELETE FROM テーブル名 WHERE 条件;

<?php
define('DB_USERNAME', 'USERNAME');
define('DB_PASSWORD', 'PASSWORD');
define('DSN', 'mysql:host=localhost; dbname=DBNAME; charset=utf8');
try {
  // 慣習としてPDOインスタンスはdbh(データベースハンドルの略)にする
  $dbh = new PDO(DSN, DB_USERNAME, DB_PASSWORD);

  $sql = "DELETE FROM TABLE_NAM WHERE AAA = 'aaa'";
  $stmt = $dbh->query($sql);
} catch(PDOException $e) {
  echo "エラーメッセージ : " . $e -> getMessage();
}
?>

コメント

タイトルとURLをコピーしました