<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[世间已无理想乡 — PHP5项目迁移PHP7.X MYSQL兼容性问题解决方案]]></title>
	<link rel="self" href="https://bbs.hyqinglan.net/feed/atom/topic/253" />
	<updated>2022-08-19T05:31:51Z</updated>
	<generator version="1.4.6">PunBB</generator>
	<id>https://bbs.hyqinglan.net/topic/253/</id>
		<entry>
			<title type="html"><![CDATA[回复: PHP5项目迁移PHP7.X MYSQL兼容性问题解决方案]]></title>
			<link rel="alternate" href="https://bbs.hyqinglan.net/post/1480/#p1480" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>黑豆 写道:</cite><blockquote><p>chaodiao，码农大光头</p></blockquote></div><p>我复制来的！！</p>]]></content>
			<author>
				<name><![CDATA[和月清岚]]></name>
				<uri>https://bbs.hyqinglan.net/user/2/</uri>
			</author>
			<updated>2022-08-19T05:31:51Z</updated>
			<id>https://bbs.hyqinglan.net/post/1480/#p1480</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[回复: PHP5项目迁移PHP7.X MYSQL兼容性问题解决方案]]></title>
			<link rel="alternate" href="https://bbs.hyqinglan.net/post/1478/#p1478" />
			<content type="html"><![CDATA[<p>chaodiao，码农大光头</p>]]></content>
			<author>
				<name><![CDATA[黑豆]]></name>
				<uri>https://bbs.hyqinglan.net/user/677/</uri>
			</author>
			<updated>2022-08-19T05:23:53Z</updated>
			<id>https://bbs.hyqinglan.net/post/1478/#p1478</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[PHP5项目迁移PHP7.X MYSQL兼容性问题解决方案]]></title>
			<link rel="alternate" href="https://bbs.hyqinglan.net/post/1476/#p1476" />
			<content type="html"><![CDATA[<p>我有一台运行超过10年的服务器运行了一些老的开源程序和一些手写的过时代码，例如DEDECMS的老版本，记事狗的老版本，PHPWIND的老版本，春节假期手贱，进行了PHP的版本升级，从PHP5.6升级到了PHP7.x。升级之后，安全性肯定会高一些，在这台服务器上也可以做更多的事情了。但是问题来了，很多代码都无法运行，经过检查服务器日志</p><p>tail -f /var/log/apache2/error_log</p><p>发现问题大多数都是因为PHP7已经不支持mysql扩展库，mysql_* 系列函数在PHP7.x 7.0以后已经废弃。所以报错，报错示例如下：</p><p>Uncaught Error: Call to undefined function mysql_connect()</p><p>Uncaught Error: Call to undefined function mysql_result()</p><p>于是，寻找解决方法，开始我想着替换程序中的所有方法为mysqli的对应方法，后来发现一行一行改工程量巨大，既然函数不存在，我直接写对应的函数或者单独写一个外挂文件include到对应的数据库类就好了。</p><p>解决问题代码如下，供大家参考。</p><br /><p>if(!function_exists(&#039;mysql_pconnect&#039;)){<br />function mysql_pconnect($dbhost, $dbuser, $dbpass){<br />global $dbport;<br />global $dbname;<br />global $linkid;<br />$linkid = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);<br />return $linkid;<br />}<br />function mysql_connect($dbhost, $dbuser, $dbpass){<br />global $dbport;<br />global $dbname;<br />global $linkid;<br />$linkid = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);<br />return $linkid;<br />}<br />function mysql_select_db($dbname){<br />global $linkid;<br />return mysqli_select_db($linkid,$dbname);<br />}<br />function mysql_fetch_array($result, $type=&#039;&#039;){<br />if ($type) {<br />return mysqli_fetch_array($result, $type);<br />}else{<br />return mysqli_fetch_array($result);<br />}<br />}<br />function mysql_fetch_assoc($result){<br />return mysqli_fetch_assoc($result);<br />}<br />function mysql_fetch_row($result){<br />return mysqli_fetch_row($result);<br />}<br />function mysql_free_result($result){<br />return mysqli_free_result($result);<br />}<br />function mysql_query($cxn){<br />global $linkid;<br />return mysqli_query($linkid,$cxn);<br />}<br />function mysql_insert_id(){<br />global $linkid;<br />return mysqli_insert_id($linkid);<br />}<br />function mysql_affected_rows(){<br />global $linkid;<br />return mysqli_affected_rows($linkid);<br />}<br />function mysql_escape_string($data){<br />global $linkid;<br />return mysqli_real_escape_string($linkid, $data);<br />}<br />function mysql_real_escape_string($data){<br />global $linkid;<br />return mysqli_real_escape_string($linkid, $data);<br />}<br />function mysql_close(){<br />global $linkid;<br />return mysqli_close($linkid);<br />}<br />function mysql_get_server_info(){<br />global $linkid;<br />return mysqli_get_server_info($linkid);<br />}<br />function mysql_num_rows($result){<br />return mysqli_num_rows($result);<br />}<br />function mysql_result($result,$row){<br />$arr = mysqli_fetch_array($result);<br />return $arr[$row];<br />}<br />}</p> <br /><br /><p>以记事狗程序为例，我把这些代码粘贴到了include/class/jishigou/mysql.class.php的最下方，经过一番折腾告于段落，对需要的人有所提示。</p>]]></content>
			<author>
				<name><![CDATA[和月清岚]]></name>
				<uri>https://bbs.hyqinglan.net/user/2/</uri>
			</author>
			<updated>2022-08-19T00:51:56Z</updated>
			<id>https://bbs.hyqinglan.net/post/1476/#p1476</id>
		</entry>
</feed>
