On Aug 21, 2012, at 3:44 PM, Matt Pelmear wrote:
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@xxxxxxxxx <mailto: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
Forgive me if I am off, but why would you check to see if a string is
truncated in your database?
Wouldn't you just check to make sure a string is a certain length in
PHP first and then instert it into the database?
Then you know for sure that nothing is getting truncated?
Best,
Karl DeSaulniers
Design Drumm
http://designdrumm.com
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php