• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sqlite_open、SQLite3::open)

「sqlite_open」「SQLite3::open」の違いを教えてください。

このQ&Aのポイント
  • サーバ移行したら、それまで「sqlite_open」で動作していたのが「SQLite3::open」でないと動作しないようになりました。何の影響を受けているのでしょうか?
  • PHPのバージョンが移行前は5.2.5で、移行後は5.3.3です。
  • SQLiteのバージョンはおそらく3ですが、確認方法が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

php5.2での sqlite_open 関数は、SQLite version 2 のデータファイル用です。 データファイルのversion確認というか、sqlite_open 関数で作ったファイルをSQLite3クラスで開こうとすると「形式が違う」といった意味のエラーが出るはずです。新規作成なら、SQLite3クラスでは version 3 のファイルが作られます。 SQLite version 2のデータファイルを version3に直接変換する方法は有りません。古いデータベースファイルからselect文で読みとっては、新しいデータベースファイルにinsertするしかありません。 もし、新環境で、PDOでも sqlite2: のDSNが使えない場合は、旧環境で、データの移行を行っておく必要があります。

re97
質問者

お礼

回答ありがとうございました >php5.2での sqlite_open 関数は、SQLite version 2 のデータファイル用です。 ・初めて知りました >SQLite version 2のデータファイルを version3に直接変換する方法は有りません。古いデータベースファイルからselect文で読みとっては、新しいデータベースファイルにinsertするしかありません。 >もし、新環境で、PDOでも sqlite2: のDSNが使えない場合は、旧環境で、データの移行を行っておく必要があります ・詳しい説明ありがとうございました ・大変参考になりましたー

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

「動作しない」というのが、Call to undefined function sqlite_open() になるということなら、SQLiteがないのでしょうね。 >・多分3と思うけど、どうやって確認? phpinfo()で確認すればいいです。SQLiteが存在しなくてSQLite3だけがある状態じゃないですかねぇ・・・。php5.3.0以降、SQLite3はデフォルトで有効ですから。 http://www.php.net/manual/ja/sqlite3.installation.php まぁ可能であれば、PDOのSQLiteを使っておくのが吉だと思います。 http://www.php.net/manual/ja/ref.pdo-sqlite.php

re97
質問者

お礼

回答&リンク提示ありがとうございました >phpinfo()で確認すればいい >php5.3.0以降、SQLite3はデフォルトで有効 ・参考になりました >PDOのSQLiteを使っておくのが吉 ・PDOのSQLiteはまた別なんですね(PDOでSQLite操作できることに気付かなかった) ・マニュアル見たつもりだったのですが… ・リンク先、大変参考になりましたー

関連するQ&A