昔のレンタルサーバーだとSQLite2のみ対応し、比較的新しいサーバーだとSQLite3のみの対応となってることが多いと思います。
同レンタルサーバー業者でも、サーバーを構築した時期により利用できるバージョンが違うことが多いです。
そこで、WEB検索することでよく見られるSQLite2のコードをSQLite3で記載した場合の対比表を作りました。
とりあえず動けばOKという考え方なので、いろいろと機能的に問題があるかもしれませんが参考になればと思います。
SQLite2 | SQLite3 | |
---|---|---|
DBのオープン | $db = sqlite_open(‘sample.db’, ‘0666’); | $db = new SQLite3(‘sample.db’); $db->exec(“BEGIN DEFERRED;”); |
DBのクローズ | sqlite_close($db); | $db->exec(“COMMIT;”); $db->close(); |
テーブルの作成 | $query = “SELECT count(*) FROM sqlite_master WHERE type=’table’ AND name=’sample'”; $handle = sqlite_query( $db, $query ); if( sqlite_fetch_single( $handle ) != 1 ) { $query = ‘CREATE TABLE sample(id text,name text)’; sqlite_exec($db, $query); } |
$query = “SELECT count(*) FROM sqlite_master WHERE type=’table’ AND name=’sample'”; if($db->querySingle($query) != 1) { $query = ‘CREATE TABLE sample(id text,name text)’; $db->querySingle($query); } |
クエリーの実行 |
sqlite_exec($db, $query); or $handle = sqlite_query( $db, $query ); ※ $query・・・クエリー文 |
$db->querySingle($query); or $results = $db->query($query); ※ $query・・・クエリー文 |
複数レコード 取得と処理 |
$query = “SELECT * FROM sample”; $handle = sqlite_query( $db, $query ); while($record = sqlite_fetch_array( $handle, SQLITE_ASSOC )) { // レコード毎の処理 } |
$query = “SELECT * FROM sample”; $results = $db->query($query); while ($record = $results->fetchArray(SQLITE3_ASSOC)) { // レコード毎の処理 } |
$db->exec(“BEGIN DEFERRED;”); と $db->exec(“COMMIT;”); については良くわからない場合はとりあえず入れておいた方が良いかと思います。
この2行が無いとSQLite3はSQLite2に比べて圧倒的にデータの書き込みが遅くなります。
詳しくお知りになりたい方は、検索するとたくさん出てきますので他サイトさんを参考にしてください。