#33117 [Opn->Bgs]: sqlite_last_error returns always 1 in case of error
ID: 33117
Updated by: iliaa@php.net
Reported By: stephaneey at hotmail dot com
-Status: Open
+Status: Bogus
Bug Type: SQLite related
Operating System: windows & Linux
PHP Version: 5.0.4
New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions. Due to the volume
of reports we can not explain in detail here why your report is not
a bug. The support channels will be able to provide an explanation
for you.
Thank you for your interest in PHP.
The returned error code is supplied to PHP by SQLite, if you look at
the SQLite error codes listed at:
http://sqlite.org/c_interface.html (section 1.4)
you'd see that value
of 1 corresponds to the errors your code generates.
Previous Comments:
------------------------------------------------------------------------
[2005-05-24 09:10:14] stephaneey at hotmail dot com
Correction of a line of code
------------------------------------------------------------------------
[2005-05-24 09:08:35] stephaneey at hotmail dot com
Description:
------------
Hello,
sqlite_last_error() is supposed to return the error code from SQLite
when a SQL statement fails. In case of error, this function returns
always 1. So if you do
echo sqlite_error_string(sqlite_last_error()); you always get the same
error message description which is:
SQL logic error or missing database. The method "lastError()" of the
super class SQLiteDatabase behaves the same way!
This is very annoying because you're warned about the error but you
cannot log it correctly in a log file for example nor applying a
specific treatment to a specific error
Reproduce code:
---------------
<?
/* Using procedural functions */
$db=sqlite_open('testdb.db');
sqlite_exec('CREATE TABLE a_table(a_col);');
//Creation of a faulty statement
sqlite_exec($db,'INSERT INTO invalid_table VALUES(\'a_value\');') or
showError(sqlite_last_error($db));
/*This should return:
no such table : invalid_table...
*/
/*Generation of another error*/
sqlite_query($db,'SELECT b_col FROM a_table;') or
showError(sqlite_last_error($db));
/* This should return
no such column: b_column...
*/
function showError($err_code)
{
echo sqlite_error_string($err_code);
//Will always result in "SQL logic error or missing..."
}
?>
Expected result:
----------------
As mentionned in the code itself, I'd expect to get an appropriate
error code in order to :
- Log the errors correctly in an error file
- In case of exceptions handling, take the appropriate action according
to the last error
Actual result:
--------------
Bad error code returned since it's always the same no matter of what
the real error is!
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33117&edit=1
Thread (3 messages)