爲了可以更好的提高系統的安全性,把原來的進銷存系統源碼升級,遇到了一些問題在這兒總結一下: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()查詢數據的時候,最好指定字符的編碼