Re: Re: PDO Mysql data truncation missing error

From: Date: Tue, 21 Aug 2012 20:44:18 +0000
Subject: Re: Re: PDO Mysql data truncation missing error
References: 1 2 3 4  Groups: php.db 
Request: Send a blank email to php-db+get-48420@lists.php.net to get a copy of this message
Amit, Thanks for the suggestion. Unfortunately, even when I explicitly enable E_WARNING or even E_ALL error reporting in php I still do not receive any indication that data was truncated on insert. -Matt On 08/21/2012 07:09 AM, Amit Tandon wrote:
Dear Matt, Even with MySQL, u get the warning as the show warnings is enabled. With php bound scripts, you have to check warnings to see the warnings. However, php is quite flexible and you an use error_reporting(E_WARNING) for non-fatal error reporting regds amit On Aug 21, 2012 10:41 AM, "Matt Pelmear" <mjpelmear@gmail.com <mailto:mjpelmear@gmail.com>> wrote:
    On 08/21/2012 01:08 AM, David Robley wrote:
        Matt Pelmear wrote:
            Hello,
            I'm trying to detect data truncation on insert to MySQL
            using PDO.
            As far as I can tell, this gets reported at least in some
            cases (ex:
            http://drupal.org/node/1528628), but I have been unable to
            see this
            myself.
            The test table I'm using has a column that is VARCHAR(5):
            mysql>  describe test;
            +-------+------------------+------+-----+---------+-------+
            | Field | Type             | Null | Key | Default | Extra |
            +-------+------------------+------+-----+---------+-------+
            | id    | int(10) unsigned | YES  |     | NULL    |       |
            | data  | varchar(5)       | YES  |     | NULL    |       |
            +-------+------------------+------+-----+---------+-------+
            2 rows in set (0.00 sec)
            My test script inserts a ten character string into the 5
            character column:
            ==== PHP TEST CODE ====
            $pdo = new PDO(
                  'mysql:host=localhost;dbname=test',
                  'username',
                  'password'
            );
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $retval = $pdo->query( 'INSERT INTO test (data) VALUES
            ("1234567890")'
            );
            print_r( $retval );
            ==== END TEST CODE ====
            This results in a new row in the test table, truncated
            after the 5th
            character as expected, but the truncation is not reported.
            (running in
            php 5.3.2 and 5.3.4)
            Running the same query directly in the mysql command line
            shows a
            warning as expected.
            Am I missing something simple here?
            Thanks,
            Matt
        Caveat: I don't use PDO but maybe the PDO::ERRMODE_WARNING
        attribute may do
        what you want?
        Cheers
    Interesting idea. I gave it a try, but got the same result!
    I think PDO::ERRMODE_WARNING tells PDO to give PHP warnings versus
    throw exceptions when there are problems (if I'm understanding it
    properly).
    -Matt
    --     PHP Database Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.db (#48420) next »