2009-07-07 109 views
8

我知道PHP 5已經支持SQLite,但由於某種原因,我無法讓它工作。如何使用和訪問使用PHP和Wamp服務器的SQLite數據庫?

我遵循SQLite tutorial: Getting started的指示。我還相信,以下不從php.ini中註釋掉:

extension=php_pdo_sqlite.dll 
extension=php_sqlite.dll. 

但是,當我從本地主機使用的是Firefox打開PHP文件,我得到這個錯誤:

Fatal error: Class 'SQLiteDatabase' not found.

我順便說一句,如果該信息很重要。

什麼可能是這個問題的原因?

回答

8

我認爲類SQLiteDatabase來自擴展sqlite而不是pdo_sqlite。所以,你可以啓用sqlite擴展,或使用PDO來代替:

<?php 
$conn = new PDO('sqlite:c:/mydb.sq3'); 
$conn->exec('some sql query'); 
+0

非常感謝!我想我能夠通過打開數據庫,因爲現在錯誤與查詢有關!現在我只需要學習語法和全部!再次感謝! – Jarvis 2009-07-07 17:24:25

5

在Windows上,你需要在你的INI進行以下設置:

extension=php_pdo.dll 
extension=php_sqlite.dll 

,我建議你在手冊中讀this page

2

SQLiteDatabasesqlite庫中的對象,它支持在PHP 5.4下降,但對各種系統和配置可以在更早的版本中被禁用,因爲這個庫被標記爲將被棄用很長一段時間。

Library的新版本不再支持Windows(Windows)或php_sqlite.so(Linux),並分別用php_sqlite3.dllphp_sqlite3.so替換。

您可以:

  1. 嘗試php_sqlite.dllphp_sqlite.so)某處網上找的。像thisthis這樣的鏈接可能對您有所幫助。但是,你必須仔細地匹配舊SQLite庫文件到你的PHP的平臺(x64x86),構建引擎(VC6VC9VC11),版本(5.x)和式(TS線程安全NTS非線程安全)。這可能是一項艱鉅的任務。

  2. 離開php_sqlite.dllSQLiteDatabase)後面,朝着新的php_sqlite3.dllSQLite3對象)的船。您必須先使用類似SQLite Studio這樣的工具將您的數據庫文件從2.1轉換爲3.0(大小可以降低一半),然後仔細比較SQLiteSQLite3 PHP手冊頁以更改必要的對象和函數調用。

如果選擇,注意,這不應該是一個艱苦的工作,因爲變化並不大。例如,我已經學會爲止:

  • SQLiteDatabase - >SQLite3
  • SQLiteDatabase::unbufferedQuery - >SQLite3::query
  • SQLiteResult::fetchAll(SQLITE_*) - >SQLite3Result::fetchArray(SQLITE3_*)

至於取,在舊SQLite我們有:

$rowsIMEI = $db->unbufferedQuery($imeiSQL)->fetchAll(SQLITE_ASSOC); 

foreach($rowsIMEI as $r) 
{ 
    ... 
} 

雖然在新SQLite3我們應該:

$rowsIMEI = $db->query($imeiSQL); 

while($r = $rowsIMEI->fetchArray(SQLITE3_ASSOC)) 
{ 
    ... 
} 

其他變化要求的工作類似的量,所以這不應該是一個終身的過程。

我當然強烈建議任何人前進並選擇選項。在大多數情況下,進展是兩種可用選項中較好的一種。

相關問題