PHP SQLite3类'exec'函数在返回false时不返回false
问题描述:
我正在使用SQLite3以及内置于PHP中的SQLite3类。下面的代码不能像我期望的那样基于我熟悉的其他mysql类。 manual表示如果查询成功,exec
方法应该返回true,失败时返回false。但是,从我所看到的情况来看,这似乎并不是这种情况。PHP SQLite3类'exec'函数在返回false时不返回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'。这些都不准确。事实上,我无法弄清楚函数返回的是什么。
有人可以帮这个错误检查if
块应该看起来像什么吗?
答
成功执行查询与返回错误时发生错误不一样。
如果你有无效的SQL,那么它将失败(查询),它将返回false。
您已经尝试了'的var_dump($ udb-> EXEC( “DELETE FROM用户WHERE ID = $德尔”))',看看到底是什么感觉回国?至于它不返回false,它正在执行查询 - 只是发生没有受到影响的行。 – jprofitt 2012-01-13 18:57:17
对,@jprof,我想到了。但结果应该是0或'0'。然后应该用'!='来捕获,因为它不检查类型。所以'!= FALSE'应该返回与'!= 0'相同的值。但是我会检查'var_dump'的结果。 – JakeParis 2012-01-13 19:16:41
'exec()'返回它是否成功执行,而不是多少行受到影响。如果它删除了5行,它不会返回5,它会返回'true'。因此,如果它删除了0行,它仍会返回'true',因为它成功执行了查询。 – jprofitt 2012-01-13 19:18:29