#40772 [Opn->Bgs]: PDO::query() does not raise exception

From: Date: Sun, 11 Mar 2007 18:31:23 +0000
Subject: #40772 [Opn->Bgs]: PDO::query() does not raise exception
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-110199@lists.php.net to get a copy of this message
ID: 40772 Updated by: iliaa@php.net Reported By: vunnuk_o at ukr dot net -Status: Open +Status: Bogus Bug Type: PDO related Operating System: Win XP PHP Version: 5.2.1 New Comment: Unfortunately on syntax errors SQLite returns a generic "error" message, which is why PHP returns HY000 error code. As far as constructor not support exception option setting, I cannot seem to replicate in SQLite. Here is the sample code I am using $d = new PDO('sqlite:test.db', NULL, NULL, array(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)); $d->query("SELETC * FROM test"); Previous Comments: ------------------------------------------------------------------------ [2007-03-11 17:24:35] dennis at inmarket dot lviv dot ua Looks like PDO constructor does not like the PDO::ATTR_ERRMODE in the options array. This way works: $conn = new PDO($dsn, $user, $pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conn->query("SELETC * FROM test"); // throws a PDOException However, for SQLite the SQLSTATE still is HY000 instead of 42000 ------------------------------------------------------------------------ [2007-03-11 15:53:21] vunnuk_o at ukr dot net However, SQLite's errorCode() is HY000... should not be 42000? ------------------------------------------------------------------------ [2007-03-11 15:47:27] vunnuk_o at ukr dot net This happens for MySQL an SQLite ------------------------------------------------------------------------ [2007-03-11 14:42:16] iliaa@php.net What PDO back-end are you using? ------------------------------------------------------------------------ [2007-03-10 18:49:24] vunnuk_o at ukr dot net Description: ------------ PDO::query() does not throw an error when the SQL query contains syntax error Reproduce code: --------------- $pdo = new PDO($dsn, $user, $pass, array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); $pdo->query("SELETC * FROM test"); Expected result: ---------------- Exception should be raised. Actual result: -------------- Exception is not raised but $pdo->errorCode() reports 42000 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=40772&edit=1

« previous php.bugs (#110199) next »