check for field type before doing charset conversion
This commit is contained in:
@@ -10,6 +10,8 @@ $Source$
|
||||
|
||||
2003-03-20 Michal Cihar <nijel@users.sourceforge.net>
|
||||
* lang/indonesian: Updated, thanks again to Rachim Tamsjadi.
|
||||
* libraries/mysql_wrappers.lib.php3: Fix for bug #705531 - check for field
|
||||
type when doing charset conversion.
|
||||
|
||||
2003-03-19 Garvin Hicking <me@supergarv.de>
|
||||
* tbl_change.php3, tbl_query_box.php3, tbl_replace_fields.php3:
|
||||
|
@@ -30,10 +30,39 @@ if (!defined('PMA_MYSQL_WRAPPERS_LIB_INCLUDED')){
|
||||
}
|
||||
|
||||
function PMA_mysql_fetch_array($result, $type = FALSE) {
|
||||
global $cfg, $allow_recoding, $charset, $convcharset;
|
||||
|
||||
if ($type != FALSE) {
|
||||
return PMA_convert_display_charset(mysql_fetch_array($result, $type));
|
||||
$data = mysql_fetch_array($result, $type);
|
||||
} else {
|
||||
return PMA_convert_display_charset(mysql_fetch_array($result));
|
||||
$data = mysql_fetch_array($result);
|
||||
}
|
||||
if (!(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] && $allow_recoding)) {
|
||||
/* No recoding -> return data as we got them */
|
||||
return $data;
|
||||
} else {
|
||||
$ret = array();
|
||||
$num = mysql_num_fields($result);
|
||||
$i = 0;
|
||||
for($i = 0; $i < $num; $i++) {
|
||||
$meta = mysql_fetch_field($result);
|
||||
$name = mysql_field_name($result, $i);
|
||||
if (!$meta) {
|
||||
/* No meta information available -> we guess that it should be converted */
|
||||
if (isset($data[$i])) $ret[$i] = PMA_convert_display_charset($data[$i]);
|
||||
if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = PMA_convert_display_charset($data[$name]);
|
||||
} else {
|
||||
/* Meta information available -> check type of field and convert it according to the type */
|
||||
if ($meta->blob || eregi('BINARY', $meta->type)) {
|
||||
if (isset($data[$i])) $ret[$i] = $data[$i];
|
||||
if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = $data[$name];
|
||||
} else {
|
||||
if (isset($data[$i])) $ret[$i] = PMA_convert_display_charset($data[$i]);
|
||||
if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = PMA_convert_display_charset($data[$name]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,12 +74,11 @@ if (!defined('PMA_MYSQL_WRAPPERS_LIB_INCLUDED')){
|
||||
}
|
||||
}
|
||||
|
||||
function PMA_mysql_fetch_object($result) {
|
||||
return PMA_convert_display_charset(mysql_fetch_object($result));
|
||||
}
|
||||
|
||||
function PMA_mysql_fetch_row($result) {
|
||||
return PMA_convert_display_charset(mysql_fetch_row($result));
|
||||
/* nijel: This is not optimal, but keeps us from duplicating code, if
|
||||
* speed really matters, duplicate here code from PMA_mysql_fetch_array
|
||||
* with removing rows working with associative array. */
|
||||
return PMA_mysql_fetch_array($result, MYSQL_NUM);
|
||||
}
|
||||
|
||||
function PMA_mysql_field_flags($result, $field_offset) {
|
||||
|
Reference in New Issue
Block a user