PHPを使用してのSQLiteに関する質問です。

同じサーバーなのですがPDOを使用して作成した場合はSQLite format 3となっているのですが
下記の内容で
$dbname = 'sqlite.db';
$dbname = sqlite_open($dbname);
作成した場合はSQLite 2.1 databaseとなっています。
確認は作成したDB内にある文字にて確認を行いました。
phpinfoで確認したところ要因として
SQLite Library 2.8.17
pdo_sqlite SQLite Library 3.3.7
となっているからではないかと思いました。
PDOを使用しない場合の作成でもSQLite3のformatとしたいのですが、SQLite Libraryのバージョンが2.8となっているので厳しいのかとも考えておりますが、PDOではSQLiteformaat3で作成できているように見えますのでSQLiteコマンドでもSQLiteformat3での作成が可能であれば教えていただけないでしょうか。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/02/08 16:27:10
  • 終了:2011/02/13 22:36:16

回答(2件)

id:asuka645 No.1

あすか回答回数856ベストアンサー獲得回数972011/02/08 16:58:08

ポイント35pt

SQLite関数とPDO_SQLite関数はまったくの別物です。


SQLite3 は PDO SQLite でサポートされることになったので、残念ながら、SQLite関数から利用することはできません。

id:quocard

回答ありがとうございます。

別物なのは理解しているのですが、PDOを使用せずにSQLiteformatを3で作成するにはSQLite Library を3以上にする必要があるとの理解でよいのでしょうか。

2011/02/08 17:13:01
id:hanako393 No.2

hanako393回答回数1142ベストアンサー獲得回数872011/02/08 17:59:38

ポイント35pt

PHPのバージョンによります。

バージョンが古い場合は、拡張モジュールを追加すれば可能だとかかれてます。

http://idocsq.net/page/122

$db = new SQLite3( 'test.db' );

で作成可能です。

id:quocard

回答ありがとうございます。

どうやら拡張モジュールが入っていないようで利用出来ないようでした。

モジュールを追加が簡単に出来るのであれば追加したいのですが、rootの権限はないのでPDOを使うしか道はなさそうな気がしてきました。

引き続き識者の方からの回答お待ちしております。

2011/02/08 19:19:25
  • id:quocard
    PDOが入っていない環境でも使いまわせるようにと思ってsqlite_を使ってみましたがこういった差が出るとは知りませんでした。
    PDOの位置づけがちょっとわからないですが、PHP5.x以上ならデフォルトで一緒に入っているとかそういう位置づけのモジュールなんでしょうか。ディストリビューションとかにもよるのでしょうけど。
  • id:rouge_2008
    PDOはPHP5.1以降にバンドルされていますが、コンパイル時の設定によってはインストールされません。
    http://www.php.net/manual/ja/pdo.installation.php

    現在はまだPHP5.2.xのサービスがほとんどではないかと思いますので、SQLite3関数が使えないサーバーの方が多いのではないかと思います。(※SQLite3関数はPHP5.3以降)
    比較した事がないので確実ではありませんが・・・

    もしPDO_SQLiteが利用できないサーバーでsqlite3のデータベースを利用する必要がある場合には、phpinfo()で確認した時に、PDOの項目があるか確認してみてください。
    PDO driversに「no value」等が表示されている場合は、次の方法で利用できるようになる可能性があります。
    (※ただし、php.iniを編集できる必要があります。)

    ルート権限のあるサーバーあるいはローカルに構築した環境で、PDO_SQLiteの共有ライブラリを作成して、サーバーにアップし、php.iniでextension_dirを変更します。
    (5.2.xで作成した場合、5.2.xでは動作すると思いますが、5.1.xで動作するかどうかは分かりません。)
    ※旧extension_dirから読み込んでいるモジュールがある場合、そちらのモジュールは使用できなくなります。
    (extension_dirの変更前と後で、利用出来るモジュールに違いがあるか事前に確認してみてください。)
  • id:quocard
    rouge_2008 様

    回答ありがとうございます。
    色々とPHPのバージョンやSQLite及びPDOについて調べてみました。
    実情はrouge_2008様のおっしゃるような状況でした。
    PHP5以降であればPDOは使える環境のようですので、実装をPDOであった場合とそうでない場合とにわけて自動で行うようにしました。
    今回は非常に勉強になりました。
    ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません