Variant f_mysql_fetch_lengths(CVarRef result) { MySQLResult *res = php_mysql_extract_result(result); if (res == NULL) return false; if (res->isLocalized()) { if (!res->isRowReady()) return false; Array ret; for (int i = 0; i < res->getFieldCount(); i++) { MySQLFieldInfo *info = res->getFieldInfo(i); if (info->type == MYSQL_TYPE_YEAR) { // special case for years, because of leading zeros ret.set(i, info->length); } else { // convert fields back to Strings to get lengths ret.set(i, res->getField(i).toString().length()); } } return ret; } MYSQL_RES *mysql_result = res->get(); unsigned long *lengths = mysql_fetch_lengths(mysql_result); if (!lengths) { return false; } Array ret; int num_fields = mysql_num_fields(mysql_result); for (int i = 0; i < num_fields; i++) { ret.set(i, (int)lengths[i]); } return ret; }