2011-04-01 54 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