这是一个奇怪的:
我可以NOT NULLS从SQLite 过滤,但不能NULLS:
这有效:
SELECT * FROM project WHERE parent_id NOT NULL;
Run Code Online (Sandbox Code Playgroud)
这些不是:
SELECT * FROM project WHERE parent_id IS NULL;
SELECT * FROM project WHERE parent_id ISNULL;
SELECT * FROM project WHERE parent_id NULL;
Run Code Online (Sandbox Code Playgroud)
全部回报:
您的查询语法存在问题(查询未执行)...
更新:
我正在使用PHP-通过我的代码使用ezSQl并使用PHPLiteAdmin接口
使用PHPLiteAdmin演示,这个表达式有效 - 所以现在我怀疑我的PHP的SQLite存在版本问题?可能是吗?这个表达式总是有效吗?
更新2:
当我使用ezSQL从PHP运行代码时,PHP警告是:
PHP警告:SQL逻辑错误或缺少数据库
有没有办法从PHP获取更多信息?这是令人发狂的不透明和奇怪的,特别是因为CLI中的相同声明工作正常...
更新3
我唯一的其他可能线索是我用PHP创建的数据库不能被CLI读取,反之亦然.我明白了:
错误:文件已加密或不是数据库
因此,肯定会有两种SQlite口味.(见这个)仍然,为什么无效的声明?
更新4
好吧我想我已经将问题追溯到罪魁祸首,如果不是原因 - 我用PHP ezSQL创建的数据库是IS NULL语句失败的数据库.如果我使用PHP的SQLite3类创建数据库,该语句可以正常工作,而且,我可以从CLI访问数据库,而ezSQL创建的数据库给出了file is encrypted错误.
所以我对ezSQL代码进行了一些挖掘 - 关闭了我看到它使用PDO方法,而不是更新的SQLite3类.也许那就是 - 我不会再浪费时间了......
无论如何,我找到了我的解决方案,即避开ezSQL,只使用PHPs SQLite3类.
我不确定这个问题是否特定于WordPress或者与mySQL有关.我试图找出如果与数据库的事务失败将返回什么.在以下场景中,我正在更新一行.如果没有更改任何值,则返回false.如果进行了更改,则返回true.如何判断交易是否失败?
$result = $wpdb->update($this->table_name, $dbfields, $where);
if($result == false)//do fail - this is not really a fail!
if($result == true)//do success
Run Code Online (Sandbox Code Playgroud)
任何指针赞赏.