プロが教える店舗&オフィスのセキュリティ対策術

「sqlite_open」「SQLite3::open」の違いを教えてください。
http://www.php.net/manual/ja/function.sqlite-ope …
http://www.php.net/manual/ja/sqlite3.open.php

・サーバ移行したら、それまで「sqlite_open」で動作していたのが「SQLite3::open」でないと動作しないようになりました
・何の影響を受けているのでしょうか?
・PHPバージョン?
・SQLiteバージョン?
・それとも単に書き方の問題?

■PHPバージョン
・移行前5.2.5
・移行後5.3.3

■SQLiteバージョン
・多分3と思うけど、どうやって確認?

A 回答 (2件)

php5.2での sqlite_open 関数は、SQLite version 2 のデータファイル用です。


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

回答ありがとうございました

>php5.2での sqlite_open 関数は、SQLite version 2 のデータファイル用です。
・初めて知りました

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

お礼日時:2014/01/01 21:48

「動作しない」というのが、Call to undefined function sqlite_open() になるということなら、SQLiteがないのでしょうね。



>・多分3と思うけど、どうやって確認?

phpinfo()で確認すればいいです。SQLiteが存在しなくてSQLite3だけがある状態じゃないですかねぇ・・・。php5.3.0以降、SQLite3はデフォルトで有効ですから。

http://www.php.net/manual/ja/sqlite3.installatio …

まぁ可能であれば、PDOのSQLiteを使っておくのが吉だと思います。

http://www.php.net/manual/ja/ref.pdo-sqlite.php
    • good
    • 0
この回答へのお礼

回答&リンク提示ありがとうございました

>phpinfo()で確認すればいい
>php5.3.0以降、SQLite3はデフォルトで有効
・参考になりました

>PDOのSQLiteを使っておくのが吉
・PDOのSQLiteはまた別なんですね(PDOでSQLite操作できることに気付かなかった)
・マニュアル見たつもりだったのですが…
・リンク先、大変参考になりましたー

お礼日時:2014/01/01 21:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!