0

更新

我的最新代码如下:

$file ="sqlite:C:\New folder\\test.db";
echo $file;
$handle = new PDO($file) or die("Could not open database");

错误

sqlite:C:\New 文件夹 est.db 致命错误:在 C:\inetpub\wwwroot\NetBeans\PHP&SQLITE.php:20 中未捕获异常 'PDOException' 并带有消息 'could not find driver' 堆栈跟踪:#0 C:\inetpub \wwwroot\NetBeans\PHP&SQLITE.php(20): PDO->__construct('sqlite:C:\New f...') #1 {main} 在 C:\inetpub\wwwroot\NetBeans\PHP&SQLITE.php 中抛出第 20 行

我正在尝试使用 PDO 驱动程序,但是当它在我的扩展 php 文件夹中时,错误一直提示我说找不到驱动程序。我现在很机智。

我正在使用 SQLITE 版本 3 和 PHP 版本 5.4.3。


我已经将数据库文件放在我的 r/w 文件夹中,但它是致命错误:调用未定义的函数 sqlite_open()。我已经在网上研究了很多资源,但我的目录路径仍然返回一些奇怪的错误(对不起,如果我太菜鸟,第一次学习)。

我的代码如下:

$db ="C:\New folder\test.db";
Test to print my directory path of the database.
echo $db;
$handle = sqlite_open($db); //or die("Could not open database");

调试结果

C:\New 文件夹 est.db
致命错误:调用 C:\inetpub\wwwroot\NetBeans\PHP&SQLITE.php 中的未定义函数 sqlite_open() 第 18 行,即“$handle = sqlite_open($db); //or die ("无法打开数据库");"

请指教我哪里做错了?我指定的路径是正确的,但是当我打印出来时,它显示了错误的路径。

谢谢

4

1 回答 1

1

您遇到的一个问题是您正在转义(无意中)您的一些路径字符。

正如您的 var_dump 所示。

C:\New folder est.db

将您的 $db 变量定义更改为

$db ="C:\New folder\\test.db";

或者只是将路径放在单引号中,这样 PHP 就不会尝试解析字符串

$db ='C:\New folder\test.db';

不管你信不信,在大多数情况下,unix 路径都会起作用:

$db ="C:/New folder/test.db";

至于问题的其余部分,您需要确保启用了 sqlite 2。查看您的 php 信息并检查您是否有类似的部分:

SQLite
SQLite support  enabled
PECL Module version     2.0-dev $Id: sqlite.c 306939 2011-01-01 02:19:59Z felipe $
SQLite Library  2.8.17
SQLite Encoding     iso8859 

如果没有,请在您的 php.ini 中确保该行

extension=php_sqlite.dll

未注释且存在(并且 .dll 存在于您的扩展文件夹中)。

然而,大多数人会建议您为 sqlite(以及任何其他数据库)使用PDO 驱动程序,因为它将在不同的数据库中提供更一致的范例(您可以对大多数数据库使用相同的代码)。

[编辑]
我在php 手册中发现了一些评论,这些评论可能会对您的问题有所帮助。

似乎包含您的 sqlite 数据库的目录必须可由 Web 服务器写入。仅使文件可写是行不通的。

不要忘记必须在 php.ini 中启用“extension=php_pdo_sqlite.dll”(如果您使用 xampp,默认情况下将禁用)。

于 2012-06-02T13:39:48.907 回答