home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 June / ENTER.ISO / files / xampp-win32-1.4.5-installer.exe / xampp / mysql_wrappers.lib.php < prev    next >
Encoding:
PHP Script  |  2003-11-26  |  6.3 KB  |  173 lines

  1. <?php
  2. /* $Id: mysql_wrappers.lib.php,v 2.2 2003/11/26 22:52:23 rabus Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5.  
  6. /**
  7.  * Functions to wrap around MySQL database functions. This is basically made
  8.  * to allow charset conversion, but later may be useful for other stuff.
  9.  */
  10.  
  11.  
  12. function PMA_mysql_dbname($result, $row, $field = FALSE) {
  13.     if ($field != FALSE) {
  14.         return PMA_convert_display_charset(mysql_dbname($result, $row, $field));
  15.     } else {
  16.         return PMA_convert_display_charset(mysql_dbname($result, $row));
  17.     }
  18. }
  19.  
  20. function PMA_mysql_error($id = FALSE) {
  21.     if ($id != FALSE) {
  22.         if (mysql_errno($id) != 0) {
  23.             return PMA_convert_display_charset('#' . mysql_errno($id) . ' - ' . mysql_error($id));
  24.         }
  25.     } elseif (mysql_errno() != 0) {
  26.         return PMA_convert_display_charset('#' . mysql_errno() . ' - ' . mysql_error());
  27.     }
  28.  
  29.     return FALSE;
  30. }
  31.  
  32. function PMA_mysql_fetch_array($result, $type = FALSE) {
  33.     global $cfg, $allow_recoding, $charset, $convcharset;
  34.  
  35.     if ($type != FALSE) {
  36.         $data = mysql_fetch_array($result, $type);
  37.     } else {
  38.         $data = mysql_fetch_array($result);
  39.     }
  40.     if (!(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] && $allow_recoding)) {
  41.         /* No recoding -> return data as we got them */
  42.         return $data;
  43.     } else {
  44.         $ret = array();
  45.         $num = mysql_num_fields($result);
  46.         $i = 0;
  47.         for($i = 0; $i < $num; $i++) {
  48.             $meta = mysql_fetch_field($result);
  49.             $name = mysql_field_name($result, $i);
  50.             if (!$meta) {
  51.                 /* No meta information available -> we guess that it should be converted */
  52.                 if (isset($data[$i])) $ret[$i] = PMA_convert_display_charset($data[$i]);
  53.                 if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = PMA_convert_display_charset($data[$name]);
  54.             } else {
  55.                 /* Meta information available -> check type of field and convert it according to the type */
  56.                 if ($meta->blob || stristr($meta->type, 'BINARY')) {
  57.                     if (isset($data[$i])) $ret[$i] = $data[$i];
  58.                     if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = $data[$name];
  59.                 } else {
  60.                     if (isset($data[$i])) $ret[$i] = PMA_convert_display_charset($data[$i]);
  61.                     if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = PMA_convert_display_charset($data[$name]);
  62.                 }
  63.             }
  64.         }
  65.         return $ret;
  66.     }
  67. }
  68.  
  69. function PMA_mysql_fetch_field($result , $field_offset = FALSE) {
  70.     if ($field_offset != FALSE) {
  71.         return PMA_convert_display_charset(mysql_fetch_field($result, $field_offset));
  72.     } else {
  73.         return PMA_convert_display_charset(mysql_fetch_field($result));
  74.     }
  75. }
  76.  
  77. function PMA_mysql_fetch_row($result) {
  78.     /* nijel: This is not optimal, but keeps us from duplicating code, if
  79.      * speed really matters, duplicate here code from PMA_mysql_fetch_array
  80.      * with removing rows working with associative array. */
  81.     return PMA_mysql_fetch_array($result, MYSQL_NUM);
  82. }
  83.  
  84. function PMA_mysql_field_flags($result, $field_offset) {
  85.     return PMA_convert_display_charset(mysql_field_flags($result, $field_offset));
  86. }
  87.  
  88. function PMA_mysql_field_name($result, $field_index) {
  89.     return PMA_convert_display_charset(mysql_field_name($result, $field_index));
  90. }
  91.  
  92. function PMA_mysql_field_type($result, $field_index) {
  93.     return PMA_convert_display_charset(mysql_field_type($result, $field_index));
  94. }
  95.  
  96. function PMA_mysql_query($query, $link_identifier = FALSE, $result_mode = FALSE) {
  97.     if ($link_identifier != FALSE) {
  98.         if ($result_mode != FALSE) {
  99.             return mysql_query(PMA_convert_charset($query), $link_identifier, $result_mode);
  100.         } else {
  101.             return mysql_query(PMA_convert_charset($query), $link_identifier);
  102.         }
  103.     } else {
  104.         return mysql_query(PMA_convert_charset($query));
  105.     }
  106. }
  107.  
  108. // mysql_list_tables() is deprecated, also we got report about weird results
  109. // under some circumstances
  110.  
  111. function PMA_mysql_list_tables($database_name, $link_identifier = FALSE) {
  112.     if ($link_identifier != FALSE) {
  113.         return PMA_mysql_query('SHOW TABLES FROM ' . PMA_backquote(PMA_convert_charset($database_name)), $link_identifier);
  114.     } else {
  115.         return PMA_mysql_query('SHOW TABLES FROM ' . PMA_backquote(PMA_convert_charset($database_name)));
  116.     }
  117. }
  118.  
  119. // mysql_list_fields() is deprecated, also we got report about weird results
  120. // under some circumstances
  121. //
  122. // using SELECT * FROM db.table
  123. // lets us use functions like mysql_field_name() on the result set
  124.  
  125. function PMA_mysql_list_fields_alternate($database_name, $table_name, $link_identifier = FALSE) {
  126.     if ($link_identifier != FALSE) {
  127.         $result = PMA_mysql_query('SHOW FIELDS FROM '
  128.          . PMA_backquote(PMA_convert_charset($database_name)) . '.'
  129.          . PMA_backquote(PMA_convert_charset($table_name)), $link_identifier);
  130.     } else {
  131.         $result = PMA_mysql_query('SHOW FIELDS FROM '
  132.          . PMA_backquote(PMA_convert_charset($database_name)) . '.'
  133.          . PMA_backquote(PMA_convert_charset($table_name)));
  134.     }
  135.  
  136.     $fields = array();
  137.     while ($row = PMA_mysql_fetch_array($result)) {
  138.         $fields[] = $row;
  139.     }
  140.  
  141.     return $fields;
  142. }
  143.  
  144. function PMA_mysql_list_fields($database_name, $table_name, $link_identifier = FALSE) {
  145.     if ($link_identifier != FALSE) {
  146.         return mysql_list_fields(PMA_convert_charset($database_name), PMA_convert_charset($table_name), $link_identifier);
  147.     } else {
  148.         return mysql_list_fields(PMA_convert_charset($database_name), PMA_convert_charset($table_name));
  149.     }
  150. }
  151.  
  152. function PMA_mysql_result($result, $row, $field = FALSE) {
  153.     if ($field != FALSE) {
  154.         return PMA_convert_display_charset(mysql_result($result, $row, PMA_convert_charset($field)));
  155.     } else {
  156.         return PMA_convert_display_charset(mysql_result($result, $row));
  157.     }
  158. }
  159.  
  160. function PMA_mysql_select_db($database_name, $link_identifier = FALSE) {
  161.     if ($link_identifier != FALSE) {
  162.         return mysql_select_db(PMA_convert_charset($database_name), $link_identifier);
  163.     } else {
  164.         return mysql_select_db(PMA_convert_charset($database_name));
  165.     }
  166. }
  167.  
  168. function PMA_mysql_tablename($result, $i) {
  169.     return PMA_convert_display_charset(mysql_tablename($result, $i));
  170. }
  171.  
  172. ?>
  173.