It seems that the normal mysql_query doesn't error when an sql command forces the server to truncate the data. The mysql server executes the sql and provides a warning but it still executes the sql so allowing php to ignore the fact that there is a warning. You can run another sql command "SHOW COUNT(*) WARNINGS" after your insert command to check if there is a warning and roll back the changes - similar to the java mysql interface. I haven't used mysqli and perhaps this is addressed in that ? Using sqlyog (3rd party mysql gui) to run the sql also provides no warning message but running it on the command line provides the "1 row affected, 1 warning message" With data validation and check this data too large situation should never happen but surely php should pay attention to the warnings too ?

code to reproduce the problem -->

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password'; *
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');*
$dbname = 'andy';
insertquery="insert into test values('012345678901234567891')";
$results= mysql_query($insertquery) or die('Error, insert query failed');
echo "<br>".mysql_errno($db) . ": " . mysql_error($db) . "<br>". mysql_info($db) ;

create database if not exists `andy`;
USE `andy`;
/*Table structure for table `test` */
 `test` varchar(20) default NULL

I understand that there are ways around this but php should really automatically notify of the warning.
Maybe i'm missing something obvious......


Andrew Blake wrote:
I figured it out

it was the mysql install not php :-)
cheers for your help though :-)

Vandegrift, Ken wrote:
You may want to check the my.ini setting for the table type you are
using and see if there is a setting in there that needs to be enabled. I thought I read once that truncation may happen silently depending on
the my.ini setting.

Just a thought.

Ken Vandegrift
Shari's Management Corporation
Web Developer/Administrator
(Direct) 503-605-4132
-----Original Message-----
From: Andrew Blake [mailto:[EMAIL PROTECTED] Sent: Thursday, November 08, 2007 7:51 AM
To: Instruct ICC
Cc: php-db@lists.php.net
Subject: Re: [PHP-DB] mysql data truncation does not cause an error to
be thrown

I could check the length of the field against the entry data and javascript myself out of trouble but i was more worried that there is no

error or message when mysql clearly returns one saying i've truncated this yet php ignores it completely. It should fail or know about the truncation at least !
Cheers for your reply though :-)


Instruct ICC wrote:
Using mysql_query if i try to force more data than a field can have
data is truncated yet no error is throw at all.
Is there a way round this ?

This isn't exactly what you want to hear, but how about validating
your input before submitting a query?
Boo! Scare away worms, viruses and so much more! Try Windows Live

PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to