我使用XAMPP
- PHP版本5.4.7
- PDO驱动- mysql, sqlite - enabled
- 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是OK的)。
连接到一个不存在的文件是创建新数据库的方式。
相对路径是相对于当前目录的,除非将其设置为某个绝对路径,否则通常无法控制当前目录。打开DB时直接使用绝对路径即可