00001 <?php
00002
00003
00004
00012 if (!@function_exists('mysql_connect')) {
00013 PMA_dl('mysql');
00014 }
00015
00016
00017 if (!@function_exists('mysql_connect')) {
00018 require_once('./libraries/header_http.inc.php');
00019 echo sprintf($strCantLoad, 'mysql') . '<br />' . "\n"
00020 . '<a href="./Documentation.html#faqmysql" target="documentation">' . $GLOBALS['strDocu'] . '</a>' . "\n";
00021 exit;
00022 }
00023
00024
00025 if (!defined('PMA_MYSQL_CLIENT_API')) {
00026 if (function_exists('mysql_get_client_info')) {
00027 $client_api = explode('.', mysql_get_client_info());
00028 define('PMA_MYSQL_CLIENT_API', (int)sprintf('%d%02d%02d', $client_api[0], $client_api[1], intval($client_api[2])));
00029 unset($client_api);
00030 } else {
00031 define('PMA_MYSQL_CLIENT_API', 32332);
00032 }
00033 }
00034
00035 function PMA_DBI_connect($user, $password, $is_controluser = FALSE) {
00036 global $cfg, $php_errormsg;
00037
00038 $server_port = (empty($cfg['Server']['port']))
00039 ? ''
00040 : ':' . $cfg['Server']['port'];
00041
00042 if (strtolower($cfg['Server']['connect_type']) == 'tcp') {
00043 $cfg['Server']['socket'] = '';
00044 }
00045
00046 $server_socket = (empty($cfg['Server']['socket']))
00047 ? ''
00048 : ':' . $cfg['Server']['socket'];
00049
00050 if (PMA_PHP_INT_VERSION >= 40300 && PMA_MYSQL_CLIENT_API >= 32349) {
00051 $client_flags = $cfg['Server']['compress'] && defined('MYSQL_CLIENT_COMPRESS') ? MYSQL_CLIENT_COMPRESS : 0;
00052
00053
00054
00055 $client_flags |= 128;
00056 }
00057
00058 if (empty($client_flags)) {
00059 $connect_func = 'mysql_' . ($cfg['PersistentConnections'] ? 'p' : '') . 'connect';
00060 $link = @$connect_func($cfg['Server']['host'] . $server_port . $server_socket, $user, $password);
00061 } else {
00062 if ($cfg['PersistentConnections']) {
00063 $link = @mysql_pconnect($cfg['Server']['host'] . $server_port . $server_socket, $user, $password, $client_flags);
00064 } else {
00065 $link = @mysql_connect($cfg['Server']['host'] . $server_port . $server_socket, $user, $password, FALSE, $client_flags);
00066 }
00067 }
00068
00069 if (empty($link)) {
00070 PMA_auth_fails();
00071 }
00072
00073 PMA_DBI_postConnect($link, $is_controluser);
00074
00075 return $link;
00076 }
00077
00078 function PMA_DBI_select_db($dbname, $link = NULL) {
00079 if (empty($link)) {
00080 if (isset($GLOBALS['userlink'])) {
00081 $link = $GLOBALS['userlink'];
00082 } else {
00083 return FALSE;
00084 }
00085 }
00086 if (PMA_MYSQL_INT_VERSION < 40100) {
00087 $dbname = PMA_convert_charset($dbname);
00088 }
00089 return mysql_select_db($dbname, $link);
00090 }
00091
00092 function PMA_DBI_try_query($query, $link = NULL, $options = 0) {
00093 if (empty($link)) {
00094 if (isset($GLOBALS['userlink'])) {
00095 $link = $GLOBALS['userlink'];
00096 } else {
00097 return FALSE;
00098 }
00099 }
00100 if (defined('PMA_MYSQL_INT_VERSION') && PMA_MYSQL_INT_VERSION < 40100) {
00101 $query = PMA_convert_charset($query);
00102 }
00103 if ($options == ($options | PMA_DBI_QUERY_STORE)) {
00104 return @mysql_query($query, $link);
00105 } elseif ($options == ($options | PMA_DBI_QUERY_UNBUFFERED)) {
00106 return @mysql_unbuffered_query($query, $link);
00107 } else {
00108 return @mysql_query($query, $link);
00109 }
00110 }
00111
00112
00113
00114 function PMA_mysql_fetch_array($result, $type = FALSE) {
00115 global $cfg, $allow_recoding, $charset, $convcharset;
00116
00117 if ($type != FALSE) {
00118 $data = mysql_fetch_array($result, $type);
00119 } else {
00120 $data = mysql_fetch_array($result);
00121 }
00122
00123
00124 if (! $data) return $data;
00125
00126 if (!defined('PMA_MYSQL_INT_VERSION') || PMA_MYSQL_INT_VERSION >= 40100
00127 || !(isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding'] && $allow_recoding)) {
00128
00129 return $data;
00130 } else {
00131 $ret = array();
00132 $num = mysql_num_fields($result);
00133 $i = 0;
00134 for ($i = 0; $i < $num; $i++) {
00135 $name = mysql_field_name($result, $i);
00136 $flags = mysql_field_flags($result, $i);
00137
00138 if (stristr($flags, 'BINARY')) {
00139 if (isset($data[$i])) $ret[$i] = $data[$i];
00140 if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = $data[$name];
00141 } else {
00142 if (isset($data[$i])) $ret[$i] = PMA_convert_display_charset($data[$i]);
00143 if (isset($data[$name])) $ret[PMA_convert_display_charset($name)] = PMA_convert_display_charset($data[$name]);
00144 }
00145 }
00146 return $ret;
00147 }
00148 }
00149
00150 function PMA_DBI_fetch_array($result) {
00151 return PMA_mysql_fetch_array($result);
00152 }
00153
00154 function PMA_DBI_fetch_assoc($result) {
00155 return PMA_mysql_fetch_array($result, MYSQL_ASSOC);
00156 }
00157
00158 function PMA_DBI_fetch_row($result) {
00159 return PMA_mysql_fetch_array($result, MYSQL_NUM);
00160 }
00161
00162 function PMA_DBI_free_result($result) {
00163 if (!is_bool($result)) {
00164 return mysql_free_result($result);
00165 } else {
00166 return 0;
00167 }
00168 }
00169
00170 function PMA_DBI_getError($link = NULL) {
00171 unset($GLOBALS['errno']);
00172 if (empty($link)) {
00173 if (isset($GLOBALS['userlink'])) {
00174 $link = $GLOBALS['userlink'];
00175
00176
00177
00178
00179
00180 }
00181 }
00182
00183 if (mysql_errno()) {
00184 $error = mysql_errno();
00185 $error_message = mysql_error();
00186 } elseif ($link) {
00187 $error = mysql_errno($link);
00188 $error_message = mysql_error($link);
00189 }
00190
00191
00192 if (isset($error) && $error) {
00193 $GLOBALS['errno'] = $error;
00194 } else {
00195 return FALSE;
00196 }
00197
00198
00199 if ($error && $error == 2002) {
00200 $error = '#' . ((string) $error) . ' - ' . $GLOBALS['strServerNotResponding'] . ' ' . $GLOBALS['strSocketProblem'];
00201 } elseif ($error && $error == 2003) {
00202 $error = '#' . ((string) $error) . ' - ' . $GLOBALS['strServerNotResponding'];
00203 } elseif ($error && defined('PMA_MYSQL_INT_VERSION') && PMA_MYSQL_INT_VERSION >= 40100) {
00204 $error = '#' . ((string) $error) . ' - ' . $error_message;
00205 } elseif ($error) {
00206 $error = '#' . ((string) $error) . ' - ' . PMA_convert_display_charset($error_message);
00207 }
00208 return $error;
00209 }
00210
00211 function PMA_DBI_close($link = NULL) {
00212 if (empty($link)) {
00213 if (isset($GLOBALS['userlink'])) {
00214 $link = $GLOBALS['userlink'];
00215 } else {
00216 return FALSE;
00217 }
00218 }
00219 return @mysql_close($link);
00220 }
00221
00222 function PMA_DBI_num_rows($result) {
00223 if (!is_bool($result)) {
00224 return mysql_num_rows($result);
00225 } else {
00226 return 0;
00227 }
00228 }
00229
00230 function PMA_DBI_insert_id($link = NULL) {
00231 if (empty($link)) {
00232 if (isset($GLOBALS['userlink'])) {
00233 $link = $GLOBALS['userlink'];
00234 } else {
00235 return FALSE;
00236 }
00237 }
00238 return mysql_insert_id($link);
00239 }
00240
00241 function PMA_DBI_affected_rows($link = NULL) {
00242 if (empty($link)) {
00243 if (isset($GLOBALS['userlink'])) {
00244 $link = $GLOBALS['userlink'];
00245 } else {
00246 return FALSE;
00247 }
00248 }
00249 return mysql_affected_rows($link);
00250 }
00251
00252 function PMA_DBI_get_fields_meta($result) {
00253 $fields = array();
00254 $num_fields = mysql_num_fields($result);
00255 for ($i = 0; $i < $num_fields; $i++) {
00256 $fields[] = PMA_convert_display_charset(mysql_fetch_field($result, $i));
00257 }
00258 return $fields;
00259 }
00260
00261 function PMA_DBI_num_fields($result) {
00262 return mysql_num_fields($result);
00263 }
00264
00265 function PMA_DBI_field_len($result, $i) {
00266 return mysql_field_len($result, $i);
00267 }
00268
00269 function PMA_DBI_field_name($result, $i) {
00270 return mysql_field_name($result, $i);
00271 }
00272
00273 function PMA_DBI_field_flags($result, $i) {
00274 return PMA_convert_display_charset(mysql_field_flags($result, $i));
00275 }
00276
00277 ?>