旧程序使用了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. Dart: List排序

    var list = <Item>[ Item(title: "item 1", isTopping: true), Item(title: "item 2& ...

  2. 大送福利!市场香饽饽VAST到底什么来头,为何被高价估值

    近日,NGK星空计划新币VAST成为了香饽饽,还未正式上线前,市场讨论的热度就居高不下.如今NGK推出1万VAST免费送新人福利更是将这波热度推向了高潮. 具体福利规则:在美国加州时间2021年2月8 ...

  3. NGK公链大事件盘点——回顾过去,展望未来!

    NGK公链构想广阔,愿景宏大,2020年10月NGK正式上线,同时NGK全球发布会正式启动,建立区块链生态体系. 早在这之前,NGK就经过了紧锣密鼓的数年缜密搭建. 2018年6月NGK底层系统技术原 ...

  4. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

  5. now-go时间百宝箱

    golang不像C#,Java这种高级语言,有丰富的语法糖供开发者很方便的调用.所以这便催生出很多的开源组件,通过使用这些第三方组件能够帮助我们在开发过程中少踩很多的坑. 时间处理是所有语言都要面对的 ...

  6. 6. vue组件详解(一)

    主要内容: 1. 组件的基本使用 2. 全局组件和局部组件 3. 父组件和子组件 4. 组件语法糖的写法 5. 组件data关联的写法 6. 父子组件的通信 组件系统是 Vue 的一个重要概念,因为它 ...

  7. teamviewer远程是账号密码都没错但是报正在初始化参数...

    1.出现这个原因,可能是 通过(mstsc)远程桌面方式运行了teamviewer,被远程控制电脑就会出现这个现象. 可以试一下 服务-teamviewer-属性-登录-本地系统账户 -允许服务与桌面 ...

  8. 又长又细,万字长文带你解读Redisson分布式锁的源码

    前言 上一篇文章写了Redis分布式锁的原理和缺陷,觉得有些不过瘾,只是简单的介绍了下Redisson这个框架,具体的原理什么的还没说过呢.趁年前项目忙的差不多了,反正闲着也是闲着,不如把Rediss ...

  9. 免费的图片校正及漂白专业工具PicGrayRemover 0.96,专业去除文档图片黑底麻点杂色,还你一个清晰的文本。

    当家长多年,每天都要拍照试卷打印.用App去掉图片黑底就成了每天必备工作.可是,有些图片文件不是来自手机,所以需要一个电脑版的图片漂白工具. 因此,经过几周的努力,图片漂白工具 PicGrayRemo ...

  10. LDAP + Samba 安装配置流程

    LDAP + Samba 安装配置 基础环境:Ubuntu18.04 安装samba root@cky:~# apt install samba smbldap-tools -y 查看版本 root@ ...