"max_length: The maximum width of the field for the result set."
Not a native English speaker, I could be reading this wrong, but the max_length property doesn't reflect the maximum length of a field but returns the current length of the contents of a field (something that can easily be derived using the strlen() function):
mysql> describe domains;
+--------------+--------------+
| Field | Type |
+--------------+--------------+
...
| name | varchar(255) |
...
$info = $query->fetch_fields();
foreach ($info as $value)
print "[max_length] ".$value->max_length."\n";
This results in:
[max_length] 14
The number of characters in this field actually is 14, but the maximum length of the field is 255.