「データベース接続PDO編」の編集履歴(バックアップ)一覧に戻る

データベース接続PDO編 - (2008/11/02 (日) 04:25:52) の編集履歴(バックアップ)


データベース接続PDO編

  • PDOを使用したPHPからmysqlの接続
  • extension=php_pdo_dll を使用できるように、php.iniファイルを修正する必要がある
  • データベースの抽象化で、急なサーバ変更時(mysql→postgreSqlなど)に大きくソース修正の必要無し
  • PEAR::DBなど他にもDB抽象化レイヤーはあるが、それらに比べて処理速度が早い
基本的なフォーマット

<?php

$dsn = 'mysql:dbname=testDB;host:localhost';  //testDBは任意
$user = 'root';                                //DB接続ユーザ名
$password = '';                               //DB接続用パスワード

    try{
        $db = new PDO($dsn, $user, $password);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        print('接続成功' . '<br />');
        $sql = 'select * from db';
        foreach ($db->query($sql) as $value){
            print($value['id'] . '<br />');
            print($value['name'] . '<br />');
        }
    }catch(PDOException $e){
        print('Error:' . $e->getMessage());
        die();
    }

    $db = NULL;

?>


PDOExceptionクラスの主なメソッド

メソッド 概要
getFile() 例外が発生したファイル名を取得
getLine() 例外が発生した行番号を取得
getCode() エラーコードを取得
getMessage() 例外メッセージを取得
getTraceAsString() バックトレースを文字列として取得

getAttribute / setAttribute メソッドで参照/設定可能な接続パラメータ

定数 概要
PDO::ATTR_AUTOCOMMIT オートコミットを有効化(0 | 1)
PDO::ATTR_TIMEOUT タイムアウト値
PDO::ATTR_ERRMODE エラーモード
    PDO::ERRMODE_SILENT エラー出力を行わない
    PDO::ERRMODE_WARNING 警告を出力
    PDO::ERRMODE_EXCEPTION PDOExceptionを発生
PDO::ATTR_SERVER_VERSION サーバのバージョン
PDO::ATTR_CLIENT_VERSION クライアントのバージョン
PDO::ATTR_SERVER_INFO サーバ情報
PDO::ATTR_CONNECTION_STATUS サーバへの接続状態
PDO::ATTR_CASE カラム名を大文字/小文字に変換
    PDO::CASE_LOWER カラム名を小文字に変換
    PDO::CASE_NATURAL ドライバからの戻り値のまま
    PDO::CASE_UPPER カラム名を大文字に変換
PDO::ATTR_CURSOR_NAME カーソル名
PDO::ATTR_ORACLE_NULLS 空文字をNULLに変換するか(0 | 1)
PDO::ATTR_PERSISTENT 接続的持続を有効にするか

 

 

insert処理サンプル

insert_form.php
<html>
<head><title>メンバー登録</title></head>
<body>
  <form method="post" action="insMenber.php">
  <talbe border="0">
    <tr>
       <th>名前:</th>
       <td><input trype="text" name="name" size="15" maxlength="50"></td>
    </tr>
   

  </table>
  </form>
</body>
</html>
 
 

 

 

 

 

 

mysql_connect関数
機能と返り値 mysqlに接続。接続に成功すると、mysqlから接続IDが返されます。失敗した場合はfalse
引数 接続するためには、[mysqlサーバ名][ログインユーザ名][ユーザのパスワード]の順番で指定

$con = mysql_connect(サーバ名, ユーザ名, パスワード);

 

mysql_select_db関数
機能と返り値 複数あるデータベースから、処理する1つのデータベースを選択
引数 第一引数に選択するデータベース名。第二引数に、mysql_connectで返されたmysql接続ID(省略可能)
$selectDB = mysql_select_db(データベース名, 接続情報);

 

mysql_query関数
機能と返り値 sql文を発行。select文では、取得された結果セットのIDが返される。insert / update / delete 文では、成功時は true、失敗時は false
引数 第一引数にsql文の文字列を指定。第二引数に、mysql_connectで返されたmysql接続ID(省略可能)
mysql_query('set names UTF-8');   //読み込み・書き込み用文字コード
$rst = mysql_query(sql文);

 

mysql_num_rows関数
機能と返り値 mysql_query関数で発行したselect文より、何レコードのデータがあるかを返す
引数 mysql_query関数で返された結果セットIDを指定
$rst = mysql_query(sql文);
$selectCnt = mysql_num_rows($rst);
echo $selectCnt;

 

mysql_fetch_array関数
機能と返り値 mysql_query関数を使用してselect文を発行した返り値の結果セットから、1レコード文を取り出します。返り値を変数に代入することにより、取り出されたデータは自動的に連想配列または数値インデックスの配列として格納される。$変数名[フィールド名]という構文で連想配列としてデータを取得できる
引数

第一引数に、mysql_query関数で返された結果セットID。第二引数に、取得された1レコード文のデータをどのように変数に格納するか指定する。
省略した場合には、MYSQL_BOTHが使われる
MYSQL_BOTH    //連想配列と数値インデックス配列の両方で格納
MYSQL_ASSOC   //連想配列として格納
MYSQL_NUM     //数値インデックス配列として格納

$rst = mysql_query(sql文);
while ($col = mysql_fetch_array($rst)) {
      echo $col['id'];
      echo $col['name'];
      echo $col['mail']
}

 

mysql_free_result関数
機能と返り値 mysql_query関数で取得した結果セットを破棄して、メモリを解放する。成功時は true、失敗時は false
引数 mysql_query関数で返された結果セットIDを指定
$rst = mysql_query(sql文);
$rst = mysql_free_result($tst);

 

mysql_close関数
機能と返り値 mysqlとの接続解除。成功時は true、失敗時は false
引数 mysql_connect関数で返された接続IDを指定
$con = mysql_connect(サーバ名, ユーザ名, パスワード);
mysql_close($con);

 

 

 

 

 

 



 

 

記事メニュー
人気記事ランキング
目安箱バナー