PHP の ドキュメント上の サンプルを踏襲しています 接続 接続時は必ず PDOException をスローします。なので、setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) は実行されていません
<?php session_cache_limiter('nocache'); session_start(); header( "Content-Type: text/html; charset=utf-8" ); /* ドライバ呼び出しを使用して MySQL データベースに接続する */ $dsn = 'mysql:host=mysql145.phy.lolipop.lan;dbname=LAA999999-mydb'; $user = 'LAA999999'; $password = 'password'; try { $dbh = new PDO($dsn, $user, $password); print "DB 接続に成功しました"; } catch (PDOException $e) { echo '接続に失敗しました: ' . $e->getMessage(); } // *************************** // 解放( 接続解除 ) // *************************** $dbh = null; // *************************** // デバッグ用 // *************************** print "<pre>"; print_r($_GET); print_r($_POST); print_r($_SESSION); print "</pre>"; ?>
複数行の順次読込み 結果を簡単に確認する為に、text/plain で出力しています
<?php session_cache_limiter('nocache'); session_start(); header( "Content-Type: text/plain; charset=utf-8" ); /* ドライバ呼び出しを使用して MySQL データベースに接続する */ $dsn = 'mysql:host=mysql145.phy.lolipop.lan;dbname=LAA999999-mydb'; $user = 'LAA999999'; $password = 'password'; try { // *************************** // 接続 // *************************** $dbh = new PDO($dsn, $user, $password); // 接続以降で try 〜 catch を有効にする設定 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); print "DB 接続に成功しました\n"; } catch (PDOException $e) { print '接続に失敗しました: ' . $e->getMessage(); } // *************************** // ループ読み出し // *************************** $sql = 'SELECT * from 社員マスタ where 氏名 like ?'; try { // まず準備する( prepare ) $stmt = $dbh->prepare($sql); // SQL の変わる部分をバインドする // bindValue は、定数・変数どちらでも可 $stmt->bindValue(1, "%田%", PDO::PARAM_STR); // 実行する $stmt->execute(); // 読み出す( FETCH_BOTH : 両方 / FETCH_ORI_NEXT : 通常順次カーソル ) while ($row = $stmt->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_NEXT)) { $data = "{$row[0]}\t{$row[1]}\t{$row[2]}\n"; print $data; print_r( $row ); } // *************************** // ステートメントの解放 // *************************** $stmt = null; } catch (Exception $e) { print "読み出しに失敗しました: {$e->getMessage()}"; } // *************************** // 解放( 接続解除 ) // *************************** $dbh = null; // *************************** // デバッグ用 // *************************** print_r($_GET); print_r($_POST); print_r($_SESSION); ?>
読込みながら更新
<?php session_cache_limiter('nocache'); session_start(); header( "Content-Type: text/plain; charset=utf-8" ); /* ドライバ呼び出しを使用して MySQL データベースに接続する */ $dsn = 'mysql:host=mysql145.phy.lolipop.lan;dbname=LAA999999-mydb'; $user = 'LAA999999'; $password = 'password'; try { // *************************** // 接続 // *************************** $dbh = new PDO($dsn, $user, $password); // 接続以降で try 〜 catch を有効にする設定 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); print "DB 接続に成功しました\n"; } catch (PDOException $e) { print '接続に失敗しました: ' . $e->getMessage(); } // *************************** // ループ読み出し // *************************** $sql = 'SELECT * from 社員マスタ where 氏名 like ?'; $sql2 = 'update 社員マスタ set 生年月日 = 生年月日 + 1 where 社員コード = ?'; try { // まず準備する( prepare ) $stmt = $dbh->prepare($sql); // SQL の変わる部分をバインドする // bindValue は、定数・変数どちらでも可 $stmt->bindValue(1, "%田%", PDO::PARAM_STR); // 実行する $stmt->execute(); // 更新用の SQL を準備する $stmt2 = $dbh->prepare($sql2); // 読み出す( FETCH_BOTH : 両方 / FETCH_ORI_NEXT : 通常順次カーソル ) while ($row = $stmt->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_NEXT)) { $data = "{$row[0]}\t{$row[1]}\t{$row[2]}\n"; print $data; print_r( $row ); // 男性のみ更新 if ( $row["性別"] == 0 ) { $stmt2->bindValue(1, $row["社員コード"], PDO::PARAM_STR); $stmt2->execute(); } } // *************************** // ステートメントの解放 // *************************** $stmt2 = null; $stmt = null; } catch (Exception $e) { print "読み出しに失敗しました: {$e->getMessage()}"; } // *************************** // 解放( 接続解除 ) // *************************** $dbh = null; // *************************** // デバッグ用 // *************************** print_r($_GET); print_r($_POST); print_r($_SESSION); ?>
このページの PDF
|
【PHP + データベースの最新記事】
- PHP で MySQLをテストする為のソースコード
- PHP で ODBC 関数を使って MS Access( データベース )にアクセスして結果を JSON 文字列として出力する
- Windows 環境の MySQL + PHP で、ODBC ドライバを使用してデータを取得する場合の3パターン
- PHP : SQLインジェクション対策付きの、MySQL のデータを JSON で返す自家製 API テスト用のテンプレート3パターン
- PHP で 自家製 API を作成して jQuery の簡単なコードで更新処理を行うサンプル
- PHP : PIPES_AS_CONCAT を使用して、CSV 作成処理をサーバの負荷にして高速に WrodPress のデータを Excel で読み込める CSV として保存する処理
- PHP : WrodPress のデータを insert SQL で保存する処理
- PHP : WrodPress のデータを Excel で読み込める CSV として保存する処理
- PHP で MySQLi 使用時の データ型定数( MYSQLI_TYPE_ ) の詳細 ( バックアップ用 insert 文を作る為 )
- PHP から MySQL の簡易的なバックアップを取得する( 但し、DBサーバがディスクへの書き込み権限を持っている必要があります )
- PHP : JSON 文字列で定義されたフォーマットを元に、そのフォーマットにセットされた配列を使って insert と update の SQL 文を自動作成。
- PHP : PDO のエラー処理
- PHPのマニュアルにある、SQLインジェクション攻撃の例
- PHP : SQLite3 を PDO の ODBC 経由で読み込み
- PHP : 5.3 / 5.2.11 用共用 sqlite3(日本語テーブル) 読み込み
- PHP : Oracle を処理する COM を使ったクラス