1

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

我能够在javascript中完美地读取/写入/更新SQLite表,当我查看谷歌浏览器上的“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 应用程序是如何命名它的)。

4

2 回答 2

1

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

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是假的,因为sqlite_query($dbhandle, 'SELECT * FROM cars_table')是一个失败的查询,因为cars_table在数据库中不存在。

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

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

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

于 2012-07-13T17:46:34.480 回答
0

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

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

于 2012-07-13T16:57:37.287 回答