我使用 XAMPP
- PHP 版本 5.4.7
- PDO 驱动程序 - mysql、sqlite - 已启用
- SQLite 库 - 3.7.7.1 - 已启用
- sqlite3 - SQLite3 模块版本 - 0.7 - 已启用
- sqlite3.extension_dir - 无值 - 无值
- API 扩展 - mysql、mysqli、pdo_mysql
所以,如果我很好地理解了一些教程,那么我就可以开始工作了。
因此,在 C:\xampp\htdocs\my_project 中,我复制了 database.db 文件(sakila 从此处下载: https://github.com/joshuakleveter/sakila_db/tree/master/public_html )
然后我创建了如下所示的index.php:
<?php
try {
$db = new PDO('sqlite:./database.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(Exception $e) {
echo 'Error: ';
echo $e->getMessage();
die();
}
当我运行它时没有错误。正如你所看到的,我的路径是/database.db。如果我将其更改为
$db = new PDO('sqlite:.database.db');
没有错误。或者不带点:
$db = new PDO('sqlite:database.db');
或绝对路径 - 没有错误。
更糟糕的是,如果我输入错误的不存在的 .db 名称:
$db = new PDO('sqlite:daaaaaaaaaaaatabase.db');
此外 - 没有错误。
你能告诉我我做错了什么吗?
对于上述所有路径,我尝试了以下操作:
$results = $db->query('select * from film');
var_dump($results);
die();
我得到“一般错误:1没有这样的表”,但database.db有该表(我安装了sqlite,在命令行中打开该数据库并检查 - database.db没问题)。
最佳答案
连接到尚不存在的文件是创建新数据库的方式。
相对路径是相对于当前目录的,您通常无法控制当前目录,除非将其设置为某个绝对路径。打开DB时直接使用绝对路径即可。
关于php - SQLite/PDO - 如何使用/连接到本地主机(XAMPP)上的数据库文件(.db)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32786409/