PHPからMySQLのデータベースへの接続

PHPからMySQLのデータベースへの接続PHPからMySQLへの接続に関する基本の「き」を書きたいと思う。ついでに、使い回し可能でシンプルなコードも残しておく。実際、これも検索したのだけれど、初心者レベルで理解が容易な情報がすぐに見つからなかったので。

想定読者は、「とりあえずPHPとMySQLをはじめた。MySQLへ接続も試した。ただ、すべてのファイルに何度もmysql_connect(‘‘,’‘,’*’)を書くのは面倒。クラス作成ももうちょっと慣れてからにしたい。」という方です。

準備

まずは、接続に必要な情報をまとめたファイルを作ります。DBConfig.phpとします。なんでこれが必要かというと、次に作成する基本のファイルから見る為なのですが、ファイルを一つにまとめない理由は、DBConfig.phpをブラウザからアクセスできない場所に置くことで、情報を取られるのを防ぐことが目的ということです。

<?php

define("DB_SERVER","localhost"); // サーバ
define("DB_NAME","dbname"); // データベース
define("DB_USER","user"); // ユーザ
define("DB_PASSWD","pass");  // パスワード

つぎに、これを利用して実際にサーバーに接続する為のファイルを作ります。DBConnect.phpとします。

<?php

// ======================================================================
//
// Simple functions for connecting and close mysql db.
// ======================================================================

require_once('DBConfig.php');

// Connect to db
function connect() {

    $link = mysql_connect(DB_SERVER,DB_USER,DB_PASSWD);
    if(!$link) {
        die("Can not connect ".DB_SERVER." : ".mysql_error());
    }

    if(!mysql_select_db(DB_NAME)) {
        die("Can not use ".DB_NAME." : ".mysql_error());
    }

    return $link;
}

// Close
function close($link) {
    mysql_close($link);
}

// Prepare
function prepare ($value) {

    return mysql_real_escape_string($value);
}

解説します。

最初の、require_once()でDBConfig.phpを読み込みます。これで、DBConfig.phpの定数にアクセスできるようになります。今は同じ階層の設定になっていますが、実際は階層を分けた方がよいでしょう。

connect()でDBConfig.phpで設定した情報を基にDBに接続します。

接続を解除するときはcolose($link)を使います。

prepare($value)でもっともシンプルなエスケープを作りました。SQLインジェクションと言って、SQLに不正な文言を送って情報の引き出しやデータベースの破壊をするという攻撃への対策です。

とりあえず、これだけです。queryなども用意しようと思いましたが、まだそちらの方の理解が追いついていないため、本当に基本的なところだけを押さえました。クラスを使うともっと便利になると思うのですが、同じ理由で今回は使いません。

使い方

下記のようにして使います。

<?php

// 接続用ファイルの読み込み
require_once('DBConnect.php');

// 接続
$link = connect();

// SQL文
$sql = "SELECT * FROM mytable";
$sql = prepare($sql);
$result = mysql_query($sql);

// 値の取り出し
while($row = mysql_fetch_array($result)) {

        // 例としてidとnameを取り出す設定にしています
    echo $row['id'];
    echo $row['name'];
} 

// 接続を解放する
close($link);

DBConnect.phpを使う前とほとんど変わらないように見えますが、mysql_connect()がなくなった分すっきりしています。

$sqlにsql文を入れ、prepare()でエスケープ処理をしています。mysql_query()でクエリを実行し、while~で値を取得しています。”while($row = mysql_fetch_array($result)){}”を利用することで、レコードが連想配列として$rowに入ります。あとは、波括弧の中で値を取り出します。

例としてこういうシンプルなテーブルを想定しましたが、上記スクリプトの実行結果は、「1taro2jiro」になります。

今回は、[PHP][MySQL]MySQL用のDB接続クラスを参考にさせていただきました。

本当に初歩的なコードだと思いますが、ここが始まりです。今後さらに充実させていこうと思っています。

Pocket
LINEで送る

You may also like...