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