2011-04-01 89 views
5

我已經嘗試了很多使用PHP PDO連接數據庫。我有很多樣品,我不確定是什麼問題。下面如何使用PHP連接一個sqlite數據庫?

是我的代碼

<?php 
    try 
    { 
     // $db = new PDO('sqlite:sampleDB.db3'); 
     // $db = new SQLiteDatabase('sampleDB.sqlite', 0666, $error); 
     $db = new PDO('sqlite:sampleDB.sqlite'); 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 
?> 

我已經試過很多方法來打開連接。請告訴我正確的方法...

+0

您收到了錯誤/消息嗎? – 2011-04-01 13:13:21

+0

你會得到什麼錯誤? – SergeS 2011-04-01 13:14:08

+0

是我還是在$ db = new PDO('sqlite:sampleDB.sqlite')後有一些星星;線?如果不是我,它會解析失敗... – yent 2011-04-01 13:18:28

回答

1

首先,您需要確保您已將PHP配置爲連接到SQLite - 請使用phpinfo()來檢查並確保您已啓用SQLite支持。

接下來,您需要在嘗試連接和查詢SQLite數據庫時使用正確的語法。根據PHP Manual for sqllite,例如

<?php 

    if ($db = sqlite_open('sampleDB', 0666, $sqliteerror)) { 
     $result = sqlite_query($db, 'select bar from foo'); 
     var_dump(sqlite_fetch_array($result)); 
    } else { 
     die($sqliteerror); 
    } 

?> 
+0

我試圖連接/創建內存中的數據庫。有用。 $ db = new PDO(「sqlite :: memory」); – ayathas 2011-04-01 13:31:54

+0

我已經執行過相同的代碼。 '無法打開數據庫'出現錯誤消息 – ayathas 2011-04-01 13:32:56

+0

您是否檢查過phpinfo()以確保SQLLite支持已啓用? – 2011-04-01 13:33:35

5

我放棄了PDO驅動程序,而是出於同樣的原因使用了sqlite3模塊。

隨着sqlite3的模塊:

class DB extends SQLite3 
{ 
     function __construct($file) 
     { 
      $this->open($file); 
     } 
} 

$db = new DB('sampleDB.sqlite'); 

我知道這不是你的問題的解決方案,但如果沒有別的辦法,這可能是有用的。

+0

如何使用此類連接查詢數據庫? – ST3 2013-10-03 19:41:54

+0

http://php.net/manual/en/book.sqlite3.php – petermolnar 2013-10-07 09:55:42

1

sql文件所在的目錄應該是服務器可寫的。嘗試爲SQLite創建單獨的目錄併爲其提供適當的訪問權限。在Unix中,你可以通過運行chmod 777 dirname來完成。另外,將您的DSN修改爲'sqlite:dirname/sampleDB.sqlite'

+0

我仍然收到錯誤消息。 SQLSTATE [HY000] [14]無法打開數據庫文件 – ayathas 2011-04-01 13:44:01

+0

這是我如何更改我的代碼。 $ dbh = new PDO('sqlite:myDir/sampleDB.sqlite'); – ayathas 2011-04-01 13:44:36