ちゃんと覚えておけよ?

忘れちゃいけない事のメモ、覚え書き

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

*