PHP から SQLite を使う

1. このページの目的

PHPからSQLiteを利用する手順について記録する。

実際に本ページで利用してみる。

2. 環境

実験時

3. PHP から SQLite を使う

要件

(情報元:PHP: 要件 - Manual

SQLite のファイルを用意する

sqlite3 コマンドで、データベースファイルを生成する。

$ sqlite3 ex1.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table tbl1(one varchar(10), two smallint);
sqlite> insert into tbl1 values('hello', 10);
sqlite> insert into tbl1 values('goodbye', 20);
sqlite> insert into tbl1 values('hi', 105);
sqlite> select * from tbl1;
hello|10
goodbye|20
sqlite>

ついでに、テーブルを1つ作成しておいた。

テーブル tbl1
レコードNo. one two
0 'hello' 10
1 'goodbye' 20
2 'hi' 105

データベースファイルは、ウェブ経由でアクセスされないように、ドキュメントルート外に置くかパーミッションを適切に設定すること。

(参考:Command Line Shell For SQLite

4. PHPを使いデータを取得して表示する (SQLite3クラスを利用)

PHPコード

$db = new SQLite3('ex1.db');
$stmt = $db->prepare('SELECT * FROM tbl1 WHERE two>=:two');
$stmt->bindValue(':two', 15, SQLITE3_INTEGER);
$result = $stmt->execute();
if ($result !== false) {
  while ($arr = $result->fetchArray()) {
    echo '<pre>';
    var_export($arr);
    echo '</pre>';
  }
}

デモ

array (
  0 => 'goodbye',
  'one' => 'goodbye',
  1 => 20,
  'two' => 20,
)
array (
  0 => 'hi',
  'one' => 'hi',
  1 => 105,
  'two' => 105,
)

(参考:PHP: SQLite3 - Manual

5. PHPを使いデータを取得して表示する (PDOを利用)

PHPコード

try {
  $dbh = new PDO('sqlite:./ex1.db', '', '',
           [PDO::ATTR_EMULATE_PREPARES => false]);
  $st = $dbh->prepare('SELECT * from tbl1 WHERE two >= :two');
  $st->execute(array(':two' => 15));
  $rows = $st->fetchall();
  echo '<pre>';
  var_export($rows);
  echo '</pre>';
  $dbh = null;
} catch (PDOException $e) {
    echo "エラー!: " . $e->getMessage() . "<br/>";
}

デモ

array (
  0 => 
  array (
    'one' => 'goodbye',
    0 => 'goodbye',
    'two' => '20',
    1 => '20',
  ),
  1 => 
  array (
    'one' => 'hi',
    0 => 'hi',
    'two' => '105',
    1 => '105',
  ),
)

参考

6. メモ