不推荐使用的函数mysql_db_query错误

时间:2013-10-30 16:21:00

标签: php mysql deprecated

最近我的托管更新了它的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

2 个答案:

答案 0 :(得分:5)

是的,PHP {5.5}中已弃用mysql函数。

你不能“修复”这个 - 事情就是这样。

您的选择是:

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

  2. 做好工作。
    老实说,从mysql_函数切换到mysqli_函数并不是什么大不了的事。 API非常相似;主要区别在于i函数需要传递连接变量。但这不是一个不可逾越的问题。转换为mysqli实际上非常简单,如果你把它放在心上。它肯定不需要几个月(除非您的代码确实是一个灾区,任何小的改动需要几个月)。

  3. 忽略警告。
    他们只是警告;你的程序将继续运行,所以只需设置PHP的错误处理来忽略弃用警告,它们就会消失。但是,不要以为这可以让你摆脱困境 - 当你的webhost下次升级并且功能已经完全从语言中删除时,修复起来会困难得多,而且更加紧迫。说真的,现在就做好工作:你以后会为自己省下一大堆痛苦。

答案 1 :(得分:2)

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

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

error_reporting(E_ALL ^ E_DEPRECATED);

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);