php5 升級 php7 版本遇到的問題處理方法總結

爲了可以更好的提高系統的安全性,把原來的進銷存系統源碼升級,遇到了一些問題在這兒總結一下:php

1.mysql引擎在php7中不在支持會致使如下錯誤mysql

Uncaught Error: Call to a member function init() on null 。sql

其實在init()函數中,有extension_loaded("mysql"),即加載mysql擴展致使的,須要改成mysqli,不事後面的mysql操做函數都須要改爲mysqli的對應類型數組

2.Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP;安全

Smarty has a deprecated constructor in /www/platform/library/Platform/View/Smarty/Smarty.class.php
[引自原文]:https://blog.csdn.net/sanbingyutuoniao123/article/details/78614077 php7

原來是smarty模板類仍是使用了php4的構造函數的寫法,因此找到smarty類後,找到與類同名的函數,將函數名改函數

爲__construct便可。fetch

PHP OOP使用和類名相同的方法名做爲構造方法,是 PHP4 的寫法,PHP 5中同時支持__construct和類同名方法,但__construct方法具備優先性。this

PHP 7開始使用和類名相同的方法名做爲構造方法會報E_DEPRECATED級別的錯誤,提示在將來版本中會完全拋棄類同名方法做爲編碼

構造函數。但程序仍然會正常執行。

<?php
        class a{
                function a(){ // 此處改成 function __construct()
                        
                }
        }
?>

 3.Use of undefined constant MYSQL_ASSOC - assumed 'MYSQL_ASSOC' (this will throw an Error in a future version of PHP)

在php7中,MYSQL_ASSOC再也不是一個常量,將 MYSQL_ASSOC改成MYSQLI_ASSOC,意思是mysqli的方式提取數組,而再也不是mysql 。(緣由:mysql_fetch_arrayhan函數轉爲mysqli_fetch_array,參數沒有修改

4.漢字顯示爲???(問號) 的解決辦法

mysqli_query($conn,'set names utf8');在使用mysqli_query()查詢數據的時候,最好指定字符的編碼

相關文章
相關標籤/搜索