旧程序使用了mysql扩展,而新环境却是PHP7以上版本,不支持mysql扩展,办法是将旧程序中的mysql相关内容修改为mysqli或PDO代码。

但是涉及修改的量大,那则可以包含(include "mysql.functions.php")此实现了mysql扩展的所有方法的兼容文件。

这里用mysqli扩展实现了原mysql扩展的所有方法,旧程序直接包含此文件即可,可以无需修改再修改其它代码。

mysql.functions.php : 

  1 <?php
2 /**
3 * php7 不支持mysql扩展的情况下,旧程序运行在PHP7环境下,直接通过公用文件包含此mysql扩展相关的函数包即可
4 */
5 if (!function_exists('mysql_connect')) {
6 if (!function_exists('mysqli_connect'))
7 {
8 die("在PHP7.0以上版本兼容使用mysql扩展的旧程序,请先开启mysqli扩展!");
9 }
10
11 function mysql_connect(string $server, $username, $password, $new_link = false, $client_flags = 0)
12 {
13 $port = '3306';
14 if (strpos($server, ':') !== false) {
15 $host_port = explode(':', $server);
16 $port = $host_port[1];
17 }
18 return mysqli_connect($server, $username, $password, '', $port);
19 }
20
21 function link_identifier_of(&$link_identifier = null)
22 {
23 if (is_null($link_identifier)) {
24 $vars = array_merge($GLOBALS, get_defined_vars());
25 $vars_len = count($vars);
26 if ($vars_len > 0) {
27 foreach ($vars as $var) {
28 $type = gettype($var);
29 if ($type == 'object' && $var instanceof \mysqli) {
30 $link_identifier = $var;
31 break;
32 }
33 }
34 }
35 }
36 }
37
38 function mysql_error($link_identifier = null)
39 {
40 link_identifier_of($link_identifier);
41
42 if (is_null($link_identifier)) {
43 return mysqli_connect_error();
44 }
45
46 return mysqli_error($link_identifier);
47 }
48
49 function mysql_errno($link_identifier = null)
50 {
51 link_identifier_of($link_identifier);
52
53 if (is_null($link_identifier)) {
54 return mysqli_connect_errno();
55 }
56
57 return mysqli_errno($link_identifier);
58 }
59
60
61
62 function mysql_selectdb($database_name, $link_identifier)
63 {
64 return mysql_select_db($database_name, $link_identifier);
65 }
66
67 function mysql_select_db($database_name, $link_identifier = null)
68 {
69 link_identifier_of($link_identifier);
70 return mysqli_select_db($link_identifier, $database_name);
71 }
72
73 function mysql_query($query, $link_identifier = null)
74 {
75 link_identifier_of($link_identifier);
76 $resultmode = MYSQLI_STORE_RESULT;
77 return mysqli_query($link_identifier, $query, $resultmode);
78 }
79
80 define('MYSQL_BOTH', MYSQLI_BOTH);
81 define('MYSQL_ASSOC', MYSQLI_ASSOC);
82 define('MYSQL_NUM', MYSQLI_NUM);
83
84 function mysql_fetch_array($result, $result_type = MYSQL_BOTH)
85 {
86 return mysqli_fetch_array($result, $result_type);
87 }
88
89 function mysql_fetch_assoc($result)
90 {
91 return mysql_fetch_array($result, MYSQL_ASSOC);
92 }
93
94 function mysql_fetch_row($result)
95 {
96 return mysql_fetch_array($result, MYSQL_NUM);
97 }
98
99 function mysql_fetch_object($result, $class_name = 'stdClass', $params = null)
100 {
101 if (!$params) {
102 $params = array();
103 }
104
105 return mysqli_fetch_object($result, $class_name, $params);
106 }
107
108 function mysql_fetch_lengths($result)
109 {
110 return mysqli_fetch_lengths($result);
111 }
112
113 function mysql_fetch_field($result, $field_offset = 0)
114 {
115 return mysqli_fetch_field_direct($result, $field_offset);
116 }
117
118 function mysql_field_name($result, $field_offset = 0)
119 {
120
121 if (is_object($result)) {
122 $mysql_field = mysql_fetch_field($result, $field_offset);
123 if (is_object($mysql_field)) {
124 return $mysql_field->name;
125 }
126 }
127
128 if (is_array($result)) {
129 return $result["$field_offset"];
130 }
131
132 return null;
133 }
134
135 function mysql_field_len($result, $field_offset = 0)
136 {
137 $mysql_field = mysql_fetch_field($result, $field_offset);
138 if (is_object($mysql_field)) {
139 return $mysql_field->length;
140 }
141 return null;
142 }
143
144
145 function mysql_field_table($result, $field_offset = 0)
146 {
147 $mysql_field = mysql_fetch_field($result, $field_offset);
148 if (is_object($mysql_field)) {
149 return $mysql_field->table;
150 }
151 return null;
152 }
153
154
155 function mysql_field_type($result, $field_offset = 0)
156 {
157 $mysql_field = mysql_fetch_field($result, $field_offset);
158 if (is_object($mysql_field)) {
159 $type = $mysql_field->type;
160
161 switch ($type) {
162 case MYSQLI_TYPE_VAR_STRING:
163 case MYSQLI_TYPE_STRING:
164 $type = 'string';
165 break;
166 case MYSQLI_TYPE_LONG:
167 case MYSQLI_TYPE_SHORT:
168 case MYSQLI_TYPE_TINY:
169 case MYSQLI_TYPE_LONGLONG:
170 $type = 'int';
171 break;
172 case MYSQLI_TYPE_BLOB:
173 case MYSQLI_TYPE_LONG_BLOB:
174 case MYSQLI_TYPE_MEDIUM_BLOB:
175 case MYSQLI_TYPE_TINY_BLOB:
176 $type = 'blob';
177 break;
178 case MYSQLI_TYPE_CHAR:
179 $type = 'char';
180 break;
181 default:
182 $type = 'string';
183 break;
184 }
185 return $type;
186 }
187 return null;
188 }
189
190 function mysql_field_flags($result, $field_offset)
191 {
192 $mysql_field = mysql_fetch_field($result, $field_offset);
193 if (is_object($mysql_field)) {
194 //return $mysql_field->flags;
195 }
196 return null;
197 }
198
199 function mysql_field_seek($result, $field_offset)
200 {
201 $mysql_field = mysql_fetch_field($result, $field_offset);
202 if (is_object($mysql_field)) {
203 //return $mysql_field->se;
204 }
205 return null;
206 }
207
208 function mysql_free_result($result)
209 {
210 $flag = true;
211 try {
212 mysqli_free_result($result);
213 } catch (\Exception $e) {
214 $flag = false;
215 }
216
217 return $flag;
218 }
219
220
221 function mysql_close($link_identifier = null)
222 {
223 link_identifier_of($link_identifier);
224 return mysqli_close($link_identifier);
225 }
226
227 function mysql_pconnect($server, $username, $password, $client_flags = null)
228 {
229 return mysql_connect($server, $username, $password, true, 0);
230 }
231
232 function mysql_stat($link_identifier = null)
233 {
234 link_identifier_of($link_identifier);
235 return mysqli_stat($link_identifier);
236 }
237
238 function mysql_affected_rows($link_identifier = null)
239 {
240 link_identifier_of($link_identifier);
241 return mysqli_affected_rows($link_identifier);
242 }
243
244 function mysql_client_encoding($link_identifier = null)
245 {
246 link_identifier_of($link_identifier);
247 return mysqli_client_encoding($link_identifier);
248 }
249
250 function mysql_create_db($database_name, $link_identifier)
251 {
252 link_identifier_of($link_identifier);
253 $query = "create database `$database_name` default character set = 'utf8' ";
254 $resultmode = MYSQLI_STORE_RESULT;
255 return mysqli_query($link_identifier, $query, $resultmode);
256 }
257
258 function mysql_data_seek($result, $row_number)
259 {
260 return mysqli_data_seek($result, $row_number);
261 }
262
263
264 function mysql_db_name($result, $row, $field = null)
265 {
266 if (is_array($result)) {
267 return $result["$row"];
268 }
269 mysql_data_seek($result, $row);
270 $row = mysql_fetch_row($result);
271 $dbname = $row[0];
272 return $dbname;
273 }
274
275 function mysql_db_query($database, $query, $link_identifier = null)
276 {
277 link_identifier_of($link_identifier);
278 mysqli_select_db($link_identifier,$database);
279 mysqli_query($link_identifier,$query);
280 }
281
282 function mysql_drop_db($database_name, $link_identifier)
283 {
284 link_identifier_of($link_identifier);
285 $result = mysqli_query($link_identifier, "drop `$database_name`");
286
287 return $result;
288 }
289
290 function mysql_escape_string($unescaped_string, $link_identifier = null)
291 {
292 link_identifier_of($link_identifier);
293 return mysqli_escape_string($link_identifier, $unescaped_string);
294 }
295
296
297 function mysql_real_escape_string($unescaped_string, $link_identifier = null)
298 {
299 link_identifier_of($link_identifier);
300 return mysqli_real_escape_string($link_identifier, $unescaped_string);
301 }
302
303 function mysql_get_client_info()
304 {
305 return mysqli_get_client_info();
306 }
307 function mysql_get_host_info($link_identifier = null)
308 {
309 link_identifier_of($link_identifier);
310 return mysqli_get_host_info($link_identifier);
311 }
312
313 function mysql_get_proto_info($link_identifier = null)
314 {
315 link_identifier_of($link_identifier);
316 return mysqli_get_proto_info($link_identifier);
317 }
318
319 function mysql_get_server_info($link_identifier = null)
320 {
321 link_identifier_of($link_identifier);
322 return mysqli_get_server_info($link_identifier);
323 }
324
325 function mysql_info($link_identifier = null)
326 {
327 link_identifier_of($link_identifier);
328 return mysqli_info($link_identifier);
329 }
330
331 function mysql_insert_id($link_identifier = null)
332 {
333 link_identifier_of($link_identifier);
334 return mysqli_insert_id($link_identifier);
335 }
336
337 function mysql_list_dbs($link_identifier = null)
338 {
339 link_identifier_of($link_identifier);
340 return mysqli_query($link_identifier, 'show databases');
341 }
342
343 function mysql_list_fields($database_name, $table_name, $link_identifier = null)
344 {
345 link_identifier_of($link_identifier);
346 $result = mysqli_query($link_identifier, "DESCRIBE `$database_name`.`$table_name`");
347 $column = array();
348 while ($arr = mysqli_fetch_assoc($result)) {
349 $column[] = $arr['Field'];
350 }
351
352 return $column;
353 }
354
355 function mysql_num_fields($result)
356 {
357 if ($result instanceof object) {
358 return mysqli_num_fields($result);
359 }
360
361 if (is_array($result)) {
362 return count($result);
363 }
364
365 return 0;
366 }
367
368 function mysql_list_processes($link_identifier = null)
369 {
370 link_identifier_of($link_identifier);
371 $result = mysqli_query($link_identifier, "show processlist");
372 return $result;
373 }
374
375 function mysql_list_tables($database, $link_identifier = null)
376 {
377 link_identifier_of($link_identifier);
378 mysqli_query($link_identifier, "use `$database`");
379 $result = mysqli_query($link_identifier, "show tables");
380 return $result;
381 }
382
383
384 function mysql_num_rows($result)
385 {
386 if (is_array($result)) {
387 return count($result);
388 }
389
390 return mysqli_num_rows($result);
391 }
392
393 function mysql_ping($link_identifier = null)
394 {
395 link_identifier_of($link_identifier);
396 return mysqli_ping($link_identifier);
397 }
398
399 function mysql_result($result, $row = 0, $field = 0)
400 {
401 mysql_data_seek($result, $row);
402 $arr = mysql_fetch_array($result);
403 $column_result = $arr["$field"];
404 if ($row != 0) {
405 mysql_data_seek($result, 0);
406 }
407
408 return $column_result;
409 }
410
411 function mysql_set_charset($charset, $link_identifier = null)
412 {
413 link_identifier_of($link_identifier);
414 return mysqli_set_charset($link_identifier, $charset);
415 }
416
417 function mysql_tablename($result, $i=0)
418 {
419 if (is_array($result)) {
420 return $result["$i"];
421 }
422
423 mysql_data_seek($result, $i);
424 $row = mysql_fetch_row($result);
425 $tablename = $row[0];
426
427 return $tablename;
428 }
429
430 function mysql_thread_id($link_identifier = null)
431 {
432 link_identifier_of($link_identifier);
433 return mysqli_thread_id($link_identifier);
434 }
435
436 function mysql_unbuffered_query($query, $link_identifier = null)
437 {
438 link_identifier_of($link_identifier);
439 return mysqli_query($link_identifier, $query);
440 }
441 }
442 ?>

在PHP7以上版本使用不了mysql扩展的更多相关文章

  1. PHP mysql扩展整理,操作数据库的实现过程分析

    相关文章:PHP mysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理   PHPmysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理 从某种程度上 ...

  2. Ubuntu 16.04 LAMP server 指南 - 配置 Apache2.4,PHP7,和MariaDB(而不是MySQL)

    翻译自:https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-on-ubuntu-16-04-lamp/ 昨天在虚 ...

  3. PHPRAP v1.0.6 发布,修复因php7.1版本遗弃mcrypt扩展造成安装失败的BUG

    PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP. 更新记录 [修复]修复因php7.1版本遗弃mcrypt扩展造成安装 ...

  4. Linux操作系统Centos7.2版本搭建Apache+PHP+Mysql环境

    对于在校大学生来说腾讯云1元主机很划算,所以就申请了一台,打算在上面学习下linux,使用版本为centos7.2版本.在服务器上比较推荐centos,此版本生命周期较长,而且网上有关centos的教 ...

  5. 从PHP5到PHP7的注意事项——PHP7全面删除Mysql扩展支持

    PHP删除了一些函数,其中是吓人的是两个: 1. ereg_* 系列的正则函数 2. mysql_* 系列的数据库连接函数 PHP7全面删除Mysql扩展支持,原本的mysql_*系列函数将在mysq ...

  6. phpstudy切换的php7.1版本php-cgi报错

    phpstudy切换的php7.1版本php-cgi报错 是因为没有装对应vc的插件. 下载地址:https://www.microsoft.com/zh-CN/download/details.as ...

  7. PHP7安装mysql扩展

    1.下载mysql扩展 http://git.php.net/?p=pecl/database/mysql.git;a=summary 2.解压后并使用phpize工具初始化(phpize一般在php ...

  8. MAC中PHP7.3安装mysql扩展

    1.下载mysql扩展http://git.php.net/?p=pecl/database/mysql.git;a=summary 2.解压tar xzvf mysql-d7643af.tar.gz ...

  9. Ubuntu 17.10 用 apt 搭建 lamp 环境、安装 phpmyadmin、redis 服务+扩展、mysql 扩展、开启错误提示、配置虚拟主机

    2018-02-24 13:50:30 更新: 个人喜欢相对原生又不太麻烦,所以用 apt 构建环境.不过,最近使用到现在记得出现过了 3 次 apache 或 mysql 服务器无法启动或无法连接的 ...

随机推荐

  1. 以太坊手续费上涨,矿工出逃,VAST前景向好!

    根据最新数据显示,以太坊的Gas费用在最近几天大幅飙涨,尤其是在过去2小时内,增幅约20%,一度达到了17.67美元.而这也导致了,许多基于以太坊协议的相关项目无法被生态建设者使用,很多矿工也纷纷出逃 ...

  2. Spring学习过程中遇到的No bean named 'beanId' is defined报错

    ApplicationContext applicationContext= new ClassPathXmlApplicationContext("bean.xml");Obje ...

  3. 基本的DOS命令

    基本的DOS命令 打开CMD的方法 菜单+系统+命令提示符 WIN+R后输入CMD 桌面或文件夹任意位置按住SHIFT后鼠标右键 常见的DOS命令 #盘符切换 直接输入要切换的盘符名称 如输入&quo ...

  4. 解决使用Redis时配置 fastjson反序列化报错 com.alibaba.fastjson.JSONException: autoType is not support

    1.问题描述 在使用redis时,配置自定义序列化redisTemplate为FastJsonRedisSerializer .  1 /** 2 * 自定义redis序列化器 3 */ 4 @Sup ...

  5. Spring IoC总结

    Spring 复习 1.Spring IoC 1.1 基本概念 1.1.1 DIP(Dependency Inversion Principle) 字面意思依赖反转原则,即调用某个类的构造器创建对象时 ...

  6. mac 下如何轻松安装神器 Anaconda

    本文推荐使用homebrew 安装 1.打开终端执行 brew cask install anaconda3 然后就可以喝一杯咖啡了,终端会自动执行安装好 如果终端卡在update homebrew ...

  7. 剑指 Offer 59 - II. 队列的最大值--滑动窗口的建模+Deque的基本使用(常用方法)

    剑指 Offer 59 - II. 队列的最大值 题目链接 package com.walegarrett; /** * @Author WaleGarrett * @Date 2020/12/3 1 ...

  8. Javascript学习,DOM对象,方法的使用

    JavaScript: ECMAScript: BOM: DOM: 事件 DOM的简单学习 功能:控制html文档内容 代码:获取页面标签(元素)对象和Element document.getElem ...

  9. Fastjson1.2.24RCE漏洞复现

    Fastjson1.2.24RCE漏洞复现 环境搭建 这里用的Vulhub靶场 cd /vulhub/fastjson/1.2.24-rce docker-compose up -d 报错 ERROR ...

  10. FreeRedis分布式锁实现以及使用

    前言 今日上班听到同事在准备面试题分布式锁(准备溜溜球),随即加入了群聊复习了一波,于是有了这篇小作文. 场景 本文中的演示 DEMO, 以下订单减库存为例. 无锁裸奔表现 示例代码: 先来模拟一个库 ...