Bug #51742 [Com]: A non well formed numeric value encountered

From: Date: Tue, 29 Apr 2014 08:02:11 +0000
Subject: Bug #51742 [Com]: A non well formed numeric value encountered
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-185491@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=51742&edit=1 ID: 51742 Comment by: hanskrentel at yahoo dot de Reported by: mike at mikegerwitz dot com Summary: A non well formed numeric value encountered Status: Open Type: Bug Package: PDO Core Operating System: All PHP Version: 5.3.2 Block user comment: N Private report: N New Comment: PDOException violates the interface here to be able to use the SQLSTATE as code which is not necessarily an integer, but merely a string which might contain a non-numeric value. Take note that this does not strictly violate the interface, as this has been solved by documenting in the interface that Exception::;getCode() might return a string: http://www.php.net/manual/en/exception.getcode.php So if you want to deal with this, you need to extend from Exception, override the constructor, save code as a private member and add the getter for it. Previous Comments: ------------------------------------------------------------------------ [2011-04-25 18:35:14] bandy dot chris at gmail dot com Related to bug 39615. ------------------------------------------------------------------------ [2010-09-17 13:46:13] mpartio at gmail dot com I agree to Mike: PHP should allow non-numeric exception codes. I think this should be pretty easy to fix? ------------------------------------------------------------------------ [2010-05-04 21:29:57] mike at mikegerwitz dot com Description: ------------ PDOException extends RuntimeException which in turn extends Exception. The Exception class has the following constructor: public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] ) The $code parameter is to be of type integer. However, when using pdo_odbc or pdo_dblib, the error code returned by the server may be a string, rather than an integer. So, for example, calling $e->getCode() may yield a value of "12X34". This is inconsistent with the method definition as well: final public int getCode ( void ) PHP's own internal library should not produce outcomes that are in conflict with PHP's definitions. Test script: --------------- try { $pdo->query( 'BAD QUERY' ); } catch ( PDOException $e ) { throw new Exception( $e->getMessage(), $e->getCode() ); } Expected result: ---------------- // Just a thrown exception, nothing important Actual result: -------------- PHP Notice: A non well formed numeric value encountered in [...] on line 7 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=51742&edit=1

« previous php.bugs (#185491) next »