已更新
我的最新代码如下:
$file ="sqlite:C:\New folder\\test.db";
echo $file;
$handle = new PDO($file) or die("Could not open database");
错误
sqlite:C:\ New folder \ test.db 致命错误:未捕获异常'PDOException',消息'找不到驱动程序'在C:\ inetpub \ wwwroot \ NetBeans \ PHP&amp; SQLITE.php:20堆栈跟踪:#0 C:\ inetpub \ wwwroot \ NetBeans \ PHP&amp; SQLITE .php(20):PDO-&gt; __ construct('sqlite:C:\ New f ...')#1 {main}在第20行的C:\ inetpub \ wwwroot \ NetBeans \ PHP&amp; SQLITE.php中抛出< / p>
我正在尝试使用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 folder \ test.db
致命错误:在第18行的C:\ inetpub \ wwwroot \ NetBeans \ PHP&amp; SQLITE.php中调用未定义的函数sqlite_open(),这是“$ handle = sqlite_open($ db); //或die(”无法打开数据库“);”
请告知我哪里做错了?我指定的路径是正确的,但是当我打印出来时,它显示错误的路径。
由于
答案 0 :(得分:1)
你遇到的一个问题是你escaping(无意中)你的一些路径字符。
正如你的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存在于您的扩展文件夹中)。
然而,大多数人会建议您使用PDO driver用于sqlite(以及任何其他数据库),因为它将在不同的数据库中提供更一致的范例(您可以对大多数数据库使用相同的代码)。
<强> [编辑] 强>
我在php manual中发现了一些可能会对您的问题有所了解的评论。
似乎包含sqlite数据库的目录必须是 可由Web服务器编写。只使文件可写不会 工作。
和不要忘记必须启用“extension = php_pdo_sqlite.dll” php.ini(如果使用xampp,默认情况下将被禁用)。