Обсуждение: PDO does not trow Exceptions for queries
$C->DB is my connection, but no exceptions will be thrown for the last queries - althogh there is an error (whoch the command line would show). Is there another option to activate throwing of exceptions? $C->DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $C->DB->query('DROP TABLE key'); $C->DB->query('CREATE TABLE key ( id SERIAL NOT NULL PRIMARY KEY, k TEXT NOT NULL UNIQUE )'); $S = $C->DB->prepare('INSERT INTO key (k) SELECT lower(k) FROM current_node_tags LIMIT 100'); What my phpinfo() says: PHP Version 5.2.6-1+lenny3 This server is protected with the Suhosin Patch 0.9.6.2 PDO PDO support enabled PDO drivers pgsql pdo_pgsql PDO Driver for PostgreSQL enabled PostgreSQL(libpq) Version 8.3.7 Module version 1.0.2 Revision $Id: pdo_pgsql.c,v 1.7.2.11 2006/03/14 10:49:18 edink Exp $ pgsql PostgreSQL Support enabled PostgreSQL(libpq) Version 8.3.7 Multibyte character support enabled SSL support enabled Active Persistent Links 0 Active Links 0 pgsql.allow_persistent On On pgsql.auto_reset_persistent Off Off pgsql.ignore_notice Off Off pgsql.log_notice Off Off pgsql.max_links Unlimited Unlimited pgsql.max_persistent Unlimited Unlimited
Andreas Kalsch wrote: > $C->DB is my connection, but no exceptions will be thrown for the last > queries - althogh there is an error (whoch the command line would show). > Is there another option to activate throwing of exceptions? > > > $C->DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); > > $C->DB->query('DROP TABLE key'); > > $C->DB->query('CREATE TABLE key ( id SERIAL NOT NULL PRIMARY KEY, k TEXT > NOT NULL UNIQUE )'); > > $S = $C->DB->prepare('INSERT INTO key (k) > SELECT lower(k) FROM current_node_tags LIMIT 100'); prepare returns a 'pdostatement' which you then have to execute: $S->execute(); This should generate an exception. -- Postgresql & php tutorials http://www.designmagick.com/
In this case it was my false - I forgot to enable error reporting on the PHP side. Now everything works like I would expect it. Chris schrieb: > Andreas Kalsch wrote: >> $C->DB is my connection, but no exceptions will be thrown for the >> last queries - althogh there is an error (whoch the command line >> would show). >> Is there another option to activate throwing of exceptions? >> >> >> $C->DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); >> >> $C->DB->query('DROP TABLE key'); >> >> $C->DB->query('CREATE TABLE key ( id SERIAL NOT NULL PRIMARY KEY, k >> TEXT NOT NULL UNIQUE )'); >> >> $S = $C->DB->prepare('INSERT INTO key (k) >> SELECT lower(k) FROM current_node_tags LIMIT 100'); > > prepare returns a 'pdostatement' which you then have to execute: > > $S->execute(); > > This should generate an exception. >