PHP SQLite3类';执行官';函数在失败时不返回false
我使用的是SQLite3,以及内置在PHP中的SQLite3类。基于我熟悉的其他mysql类,以下代码的工作方式与我预期的不同。表示如果查询成功,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
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
@塞普:太好了。把它写在一个答案里,我会给你一个代表:)