SQLite2をSQLite3にした結果とPHPによる接続方法、処理方法の違いについて
サーバーのPHPバージョンを5.4にしたくて、PHP5.4から標準で入っていないSQLITE2を手動で入れようと頑張ってみたけど、うまく入らず。。。
どうせこの先SQLite3になるわけだし、サーバーによってはSQLite2に対応していなかったりするから、この際SQLite3にしてしまおうと思いました。
普段私が管理している。TkSQLiteというソフトでSQLite2のデータをSQL形式で「書きだし」して、そのソフトでSQLite3形式のデータベースを新規作成します。
その後、先ほど書き出したSQLファイルを新しいデータベースに「読み込み」してSQLite3のデータベースにデータを入れ込みます。
以上、SQLite2からSQLite3に変更完了です。
ここで気づいた点がSQLite2よりSQLite3の方がデータが軽い!
今まで4710件ほどのレコード登録されたデータベースがSQLite2では5.61MBでしたが、SQLite3になったら1.52MBになりました。
想像以上にダイエットが出来たので驚きです。
そして、PHPによる接続方法も変更があり、頑張って対応しました。以下がデータベース接続方法や、SELECT文やUPDATE文。
■SQLite3のデータベース接続方法
//データベース接続
try {
$db = new SQLite3(sqlite3.db');
echo "接続されました。";
} catch (Exception $e) {
echo 'DBへの接続でエラーが発生しました。';
echo $e->getTraceAsString();
}■SQLite2のデータベース接続方法
//データベース接続
$link = sqlite_open(sqlite2.db', 0666, $sqliteerror);
if (!$link) {
die('接続失敗です。'.$sqliteerror);
}■SQLite3のSELECT文から出力
//
//「data」テーブル内にある、「group」のteamAに該当する物を取り出す。という内容
//$sqlにSQLiteのSELECT文を入れる
$sql = 'select * from data where group=teamA';
//実行
$results = $db->query($sql);
//「teamA」に該当する情報をループで出力
while ($rows = $results->fetchArray()) {
echo $rows[0];
echo $rows[1];
}
//データベース切断
$db->close();
■SQLite2のSELECT文から出力
//
//「data」テーブル内にある、「group」のteamAに該当する物を取り出す。
//$sqlにSQLiteのSELECT文を入れる
$sql = 'select * from data where group=teamA';
//実行
$result = sqlite_query($link,$sql) or die($sqliteerror . ':' . $sql);
//「teamA」に該当する情報をループで出力
while ($rows = $results->fetchArray()) {
echo $rows[0];
echo $rows[1];
}
//データベース切断
sqlite_close($link);
■SQLite3のUPDATE文
//
//「data」テーブル内の「id」2に登録されている、「田中」を「佐藤」に
//$sqlにSQLiteのSELECT文を入れる
$sql = $update = sprintf("UPDATE data SET name =佐藤 WHERE id=2);
//実行
$query = $db->exec($update);
//判定メッセージ
if (!$query) {
echo "クエリーが失敗しました。";
}else{
echo $db->changes() . '件のレコードを更新しました。
';
}
//データベース切断
sqlite_close($link);
■SQLite2のUPDATE文
//
//「data」テーブル内の「id」2に登録されている、「田中」を「佐藤」に
//$sqlにSQLiteのSELECT文を入れる
$sql = $update = sprintf("UPDATE data SET name =佐藤 WHERE id=2);
//実行
$query = sqlite_exec($db, $sql, $sqliteerror);
//判定メッセージ
if (!$query) {
die('クエリーが失敗しました。'.$sqliteerror);
}else{
print(sqlite_changes($db).'件のレコードを更新しました。
');
}
//データベース切断
sqlite_close($link);
Comment