PHP SQLite3类';执行官';函数在失败时不返回false

PHP SQLite3类';执行官';函数在失败时不返回false,php,if-statement,sqlite,Php,If Statement,Sqlite,我使用的是SQLite3,以及内置在PHP中的SQLite3类。基于我熟悉的其他mysql类,以下代码的工作方式与我预期的不同。表示如果查询成功,exec方法应返回true,如果查询失败则返回false。然而,从我所看到的,这件事似乎不是这样的 $udb = new SQLite3('app.sqlite'); if($udb->exec("DELETE FROM users WHERE id = $del") != FALSE) $message = 'Deleted User

我使用的是SQLite3,以及内置在PHP中的SQLite3类。基于我熟悉的其他mysql类,以下代码的工作方式与我预期的不同。表示如果查询成功,
exec
方法应返回true,如果查询失败则返回false。然而,从我所看到的,这件事似乎不是这样的

$udb = new SQLite3('app.sqlite');

if($udb->exec("DELETE FROM users WHERE id = $del") != FALSE)
    $message = 'Deleted User';
 else
    $message = 'Could not delete the user.';
我希望,如果具有该ID的行不存在,查询将返回false、0或“0”。这些都不准确。事实上,我根本不知道函数返回了什么


如果
块应该是什么样子,是否有人可以帮助检查
错误?

成功执行查询与失败时返回FALSE不一样


如果SQL无效,则它将失败(查询)并返回false。

成功执行查询与失败时返回的false不同

如果您的SQL无效,那么它将失败(查询),并返回false。

$udb->changes()>0
就是您要查找的

$udb->changes()>0
是您需要的


您是否尝试过
var\u dump($udb->exec(“从id=$del的用户中删除”)
来查看它返回的确切内容?只要它不返回
false
,它就可以很好地执行查询——只是碰巧没有受影响的行。但是结果应该是0或“0”。然后仍然应该用
捕捉到这些信息=,因为它不检查类型。所以
!=FALSE
应返回与
相同的值0
。但是我将检查
var\u dump
以了解结果。
exec()
返回它是否成功执行,而不是受影响的行数。如果它删除了5行,则不会返回5行,它将返回
true
。这样,如果它删除了0行,它仍然会返回
true
,因为它确实成功地执行了查询。您是否尝试过
var\u dump($udb->exec(“从id=$del的用户中删除”)
来查看它到底返回了什么?只要它不返回
false
,它就可以很好地执行查询——只是碰巧没有受影响的行。但是结果应该是0或“0”。然后仍然应该用
捕捉到这些信息=,因为它不检查类型。所以
!=FALSE
应返回与
相同的值0
。但是我将检查
var\u dump
以了解结果。
exec()
返回它是否成功执行,而不是受影响的行数。如果它删除了5行,则不会返回5行,它将返回
true
。这样,如果它删除了0行,它仍然会返回
true
,因为它确实成功地执行了查询。好的,足够了,但不是真正的解决方案。那么,您将如何检查该行是否已被实际删除?也许您正在查找的是
$udb->changes()>0
@塞普:太好了。把它放在一个答案里,我会给你一个代表:)好的,没错,但不是真正的解决方案。那么,您将如何检查该行是否已被实际删除?也许您正在查找的是
$udb->changes()>0
@塞普:太好了。把它写在一个答案里,我会给你一个代表:)