我正在使用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
塊應該看起來像什麼嗎?
您已經嘗試了'的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