>> PHP入門トップに戻る

SQLite SELECT文(データ取得)

SQLiteでデータを取得する際のSELECT文について説明します。

以下のようなSQLコマンドをsqlite_query関数より実行し、結果リソースを取得します。
SELECT カラム名,カラム名 from テーブル名
取得したいカラムが二つ以上ある場合は上記のようにカンマ区切りで説明します。
もし全てのカラムを取得したい場合は、
SELECT * from テーブル名
このようにアスタリスク(*)を指定します。

SQLiteのデータベースは自動的にrowidという自動連番のカラムが作成されますが、
そのカラムの値を取得する場合はアスタリスクをつけるだけでは取得できないので、
以下のように明示的にrowidを指定する必要があります。
SELECT rowid,* from DB名
これでrowidを含む全てのカラムを取得できるようになります。

SELECT文をsqlite_queryで実行すると、結果セットのリソースが返ってきます。
そのリソースをsqlite_fetch_array関数に指定すると、配列で値を取得することが出来ます。
array sqlite_fetch_array ( resource $result [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )
第一引数はsqlite_queryの結果リソースを、
第二引数は戻り値の配列をどのような形式で返すかを示す定数を指定します。
デフォルトではSQLITE_BOTHが指定されており、通常は以下のような感じでデータを取得します。
<?php
$dbhandle = sqlite_open('sqlitedb');
$query = sqlite_query($dbhandle, 'SELECT name, email FROM users LIMIT 25');
while ($entry = sqlite_fetch_array($query, SQLITE_ASSOC)) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>
sqlite_fetch_arrayはデータがなくなるとFALSEを返すので、
データがある間はwhile文でループさせて取得しています。

また、sqlite_query関数を省略して、sqlite_array_query関数というものを使って、
結果を配列で一発取得することも可能です。
この場合はDBハンドルを第一引数に指定し、SELECTのSQL文を第二引数に指定することになります。
array sqlite_array_query ( resource $dbhandle,string $query [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )
その場合は以下のような感じでデータを配列から取得することになります。
<?php
$dbhandle = sqlite_open('sqlitedb');
$result = sqlite_array_query($dbhandle, 'SELECT name, email FROM users LIMIT 25', SQLITE_ASSOC);
foreach ($result as $entry) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>
このように複数レコードで複数のカラムを取得した場合は2次元配列になっているので、
foreachなどでループさせて、それぞれの連想配列から値を取り出すようなコードを書きます。
>> 【SQLite ORDER BY(ソート)】に進む
>> PHP入門トップに戻る