0

最近在我的主机更新了它的 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

有没有解释这个错误以及如何解决它?~ 谢谢

注意:我知道mysqlipdo不能转移到任何,因为我的网站主要依赖mysql并且需要几个月来进行重大更改,所以请你坚持下去mysql

4

2 回答 2

5

是的,这些mysql函数在 PHP 5.5 中已被弃用。

你不能“解决”这个问题——事情就是这样。

您的选择是:

  1. 降级回 PHP 5.4。
    鉴于您的虚拟主机进行了升级,这听起来不像是一种选择。

  2. 干活吧。老实说,从功能
    切换到功能并不是什么大不了的事。API 非常相似;主要区别在于函数需要传递连接变量。但这并不是一个无法克服的问题。如果您认真考虑,转换为实际上非常简单。这肯定不需要几个月(除非你的代码真的是一个灾难区,任何微小的变化都需要几个月的时间)。mysql_mysqli_imysqli

  3. 忽略警告。
    它们只是警告;尽管有它们,您的程序仍将继续运行,因此只需将 PHP 的错误处理设置为忽略弃用警告,它们就会消失。但是,不要以为这会让您摆脱困境——当您的虚拟主机下次升级并且功能已从语言中完全删除时,修复将变得更加困难,而且更加紧迫。说真的,现在就做这项工作:以后你会为自己省去一大堆痛苦。

于 2013-10-30T16:28:34.093 回答
2

您将需要升级到 MySQLi 甚至更好的 PDO。但是,我知道您现在可能需要一个解决方案,因为您有一个实时网站并且您想隐藏错误(但该网站仍然可以工作)。但是,您将需要考虑升级,因为这些功能将在不久的将来被删除。

将此添加到顶部的主文件中。

error_reporting(E_ALL ^ E_DEPRECATED);

或者

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
于 2013-10-30T16:22:56.613 回答