最近我的托管更新了它的php版本后,我的网站出现了错误,这里是错误信息
Deprecated: Function mysql_db_query() is deprecated in /my_path/file.php on line 13
Deprecated: Function mysql_db_query() is deprecated in /my_path/file.php on line 14
以下是file.php
require_once("db.php"); // connect
$timeoutseconds = 100;
$timestamp=time();
$timeout=$timestamp-$timeoutseconds;
mysql_db_query($db, "INSERT INTO online VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')") or die("0 Users online"); // this is line 13 that shows error
mysql_db_query($db, "DELETE FROM online WHERE timestamp<$timeout") or die("0 Users online"); // this is line 14 that shows error
是否有解释此错误以及如何解决? 〜谢谢
注意:我知道mysqli
和pdo
,但由于我的网站主要取决于mysql
而无法转换为任何内容,并且需要数月才能进行重大更改,所以请您坚持下去与mysql
。
答案 0 :(得分:5)
是的,PHP {5.5}中已弃用mysql
函数。
你不能“修复”这个 - 事情就是这样。
您的选择是:
降级回PHP 5.4。
鉴于您的虚拟主机进行了升级,这听起来不是一个选项。
做好工作。
老实说,从mysql_
函数切换到mysqli_
函数并不是什么大不了的事。 API非常相似;主要区别在于i
函数需要传递连接变量。但这不是一个不可逾越的问题。转换为mysqli
实际上非常简单,如果你把它放在心上。它肯定不需要几个月(除非您的代码确实是一个灾区,任何小的改动需要几个月)。
忽略警告。
他们只是警告;你的程序将继续运行,所以只需设置PHP的错误处理来忽略弃用警告,它们就会消失。但是,不要以为这可以让你摆脱困境 - 当你的webhost下次升级并且功能已经完全从语言中删除时,修复起来会困难得多,而且更加紧迫。说真的,现在就做好工作:你以后会为自己省下一大堆痛苦。
答案 1 :(得分:2)
您需要升级到MySQLi甚至更好的PDO。但是,据我所知,您现在可能需要一个解决方案,因为您有一个实时网站并且您想要隐藏错误(但网站仍然有用)。但是,您需要考虑升级,因为这些功能将在不久的将来被删除。
将其添加到顶部的主文件中。
error_reporting(E_ALL ^ E_DEPRECATED);
或
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);