这里有一个奇怪的:
我可以NOT NULLS
从 SQLite 过滤,但不能NULLS
:
这有效:
SELECT * FROM project WHERE parent_id NOT NULL;
这些不会:
SELECT * FROM project WHERE parent_id IS NULL;
SELECT * FROM project WHERE parent_id ISNULL;
SELECT * FROM project WHERE parent_id NULL;
全部返回:
您的查询语法有问题(查询未执行)...
更新:
我正在使用 PHP 执行此操作 - 通过我的 ezSQl 代码并使用PHPLiteAdmin界面
使用PHPLiteAdmin 演示,这个表达式有效——所以现在我怀疑我的 PHP 的 SQLite 存在版本问题?可以吗?这个表达式不是一直有效吗?
更新 2:
当我使用 ezSQL 从 PHP 运行代码时,PHP 警告是:
PHP 警告:SQL 逻辑错误或缺少数据库
有没有办法从 PHP 中获取更多信息?这是非常不透明和奇怪的,特别是因为 CLI 中的相同语句工作正常......
更新 3
我拥有的唯一其他可能的线索是 CLI 无法读取我使用 PHP 创建的数据库,反之亦然。我得到:
错误:文件已加密或不是数据库
所以这里肯定有两种 SQlite 口味。(看到这个)仍然,为什么无效的声明?
更新 4
好的,我想我已经找到了罪魁祸首,如果不是原因的话——我用 PHP ezSQL 创建的数据库是 IS NULL 语句失败的数据库。如果我使用 PHP 的 SQLite3 类创建数据库,该语句工作正常,而且,我可以从 CLI 访问数据库,而 ezSQL 创建的数据库给出了file is encrypted
错误。
所以我对 ezSQL 代码做了一些研究——我看到它使用 PDO 方法,而不是较新的 SQLite3 类。也许那是什么-我不会再浪费时间了...
无论如何,我找到了我的解决方案,即避开 ezSQL,只使用 PHPs SQLite3 类。