用PHP读取SQLite数据库?(使用sencha touch sqlite制作)


Read a SQLite database in PHP? (made using sencha touch sqlite)

我有一个使用Sencha Touch中的SQLite端口创建的SQLite数据库(此处),数据库名称为不带引号的"cars",其中的表名为不带括号的"cars_table"。

我能够用javascript完美地读取/写入/更新SQLite表,当我在谷歌chrome上查看"Cookies/Local Storage"页面时,我发现我的域下的数据库设置了正确的数据库名称。

然而,我完全无法从PHP中读取或写入它。我有PHP 5.3,当检查phpinfo()时,我已经准备好了SQLite。

有什么想法吗?

我的基本PHP代码只是:

$dbhandle = sqlite_open('cars');
$query = sqlite_query($dbhandle, 'SELECT * FROM cars_table');
$rows = sqlite_num_rows($query);
echo $rows;

PHP错误:

Warning: sqlite_query(): no such table: cars_table in     /var/www/manage/testall/www/thesqlite.php on line 6 Warning: sqlite_num_rows() expects parameter 1 to be resource, boolean given in /var/www/manage/testall/www/thesqlite.php on line 7

编辑2:

当使用sqlite_master搜索以列出表名时,我看到0个表。因此,错误可能在数据库名称中(在这种情况下,我错过了sencha touch应用程序如何命名它)。

我将在错误和您提供的代码上走相反的路:

Warning: sqlite_query(): no such table: cars_table in /var/www/manage/testall/www/thesqlite.php on line 6 Warning: sqlite_num_rows() expects parameter 1 to be resource, boolean given in /var/www/manage/testall/www/thesqlite.php on line 7

意味着$query是布尔值(在本例中为false),而不是资源。

$query为false,因为sqlite_query($dbhandle, 'SELECT * FROM cars_table')是一个失败的查询,因为数据库中不存在cars_table

数据库中不存在cars_table,因为数据库是由句子sqlite_open('cars')刚刚创建的(是的,刚刚创建),所以数据库中没有表。这是默认行为,正如您在一篇文章中提到的cars是服务器上不存在的文件(php运行的地方),因为好的cars文件/数据库位于客户端(浏览器),javascript可以访问并操作它。

但是,小心,您可以在服务器中找到cars文件/数据库,因为每次找不到它时,SQLite都会将其创建为空。

如果您需要使用真正的cars文件/数据库,则需要首先上传到服务器。

编辑
请看这里如何列出使用ATTACH打开的SQLite数据库文件中的表?

如果表不存在,则可以对不存在的表执行任何查询,因此会得到FALSE。