PDOを利用したSQLiteデータベース接続
PECLのPDOクラスを利用してSQLiteのデータベースへ接続します。注意する点はSQLiteのバージョンです。
PDOクラスではSQLite3.xを使用しています。
以前のバージョンのSQLiteで作成されたデータベースを開こうとすると以下のような
エラーが出てしまいます。
'PDOException' with message '26 file is encrypted or is not a database'
SQLite3.xのコマンドラインユーティリティを使用して確認出来ます。
以下の例ではtry・catchを連発しておりますが、ご容赦ください。
正しい使い方などはDo You PHP?さんを参考にされると良いかと思います。
また、PDOをつかったOracleへの接続例もとても参考になります。
/* PDO データベースハンドルの生成 */ try { $dbh = new PDO('sqlite:test.db','', ''); } catch (PDOException $exception){ echo "PDO生成時:"; echo $exception->getMessage(); echo "n"; exit(); } /* エラーモードの設定(例外処理を有効) */ $dbh->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION); /* テーブルの作成 */ /* idをプライマリ宣言し自動シーケンス */ $query = <<<QUERY CREATE TABLE account_tbl ( id INTEGER, number INTEGER, name VARCHAR(64) NOT NULL, email VARCHAR(128), PRIMARY KEY (id) ); QUERY; try { $dbh->query($query); } catch (PDOException $exception){ echo "テーブルの作成時:"; echo $exception->getMessage(); echo "n"; } /* ステートメントの生成 */ $query = "INSERT INTO account_tbl (number,name,email) VALUES (:number,:name,:email) "; $stmt = $dbh->prepare($query); /* バインド変数を設定 */ $stmt->bindParam(':number',$number, PDO_PARAM_INT); $stmt->bindParam(':name', $name, PDO_PARAM_STR, 64); $stmt->bindParam(':email', $email, PDO_PARAM_STR, 128); /* 行の挿入 */ $number = 30248; $name = '高橋'; $email = 'yujiro@rakuto.net'; try { $stmt->execute(); } catch (PDOException $exception){ echo "行の挿入時1:"; echo $exception->getMessage(); echo "n"; } $number = 45567; $name = '藤井'; $email = 'fuzy@rakuto.net'; try { $stmt->execute(); } catch (PDOException $exception){ echo "行の挿入時2:"; echo $exception->getMessage(); echo "n"; } /* ステートメントの開放 */ $stmt = null; /* データの取得 */ $stmt = $dbh->prepare('SELECT * FROM account_tbl'); $stmt->execute(); $cols = array(); while ($cols = $stmt->fetch(PDO_FETCH_ASSOC)) { echo "----------------------n"; echo "id = {$cols['id']}n"; echo "number= {$cols['number']}n"; echo "name = {$cols['name']}n"; echo "email = {$cols['email']}n"; echo "----------------------n"; } /* ステートメントの開放 */ $stmt = null;
実行結果
----------------------id = 1
number= 30248
name = 高橋
email = yujiro@rakuto.net
----------------------
----------------------
id = 2
number= 45567
name = 藤井
email = fuzy@rakuto.net
----------------------
