Re: Re: PDO Mysql data truncation missing error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx> 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
>
>

[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux