2013-10-30 46 views
0

我后最近更新的托管的PHP版本我有错误在我的网站,在这里是错误消息弃用功能mysql_db_query错误

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

mysqli_ *基本上是mysql_ *带有i。编辑:当然,更新/更好的代码。 – Rogue

+0

你应该更新你的代码来使用mysqli_函数,如果你不使用OO方法,它不应该需要对代码做太多的改变。 – Naryl

+0

停止使用不推荐使用的库。 – Kermit

回答

2

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

添加到您的主文件在顶部。

error_reporting(E_ALL^E_DEPRECATED); 

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 
+1

千万不要隐藏错误! – ComFreek

+2

忽略错误不是**答案。 – Kermit

+0

这不是一个错误。这是一个警告。 –

5

是的,mysql功能已被弃用的PHP 5.5。

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

的选项有:

  1. 降级到PHP 5.4。
    这听起来不像一个选项,因为您的虚拟主机进行了升级。

  2. 只是做这项工作。
    老实说,从mysql_功能切换到mysqli_功能并不是什么大事。这些API非常相似;主要区别在于i函数需要传递连接变量。但这不是一个无法克服的问题。如果你放心,转换为mysqli其实很简单。它当然不会花费几个月的时间(除非你的代码真的是一个灾难地带,任何小的变化都需要几个月)。

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

+1

将代码升级到MySQLi时,强烈建议使用预准备语句。 – ComFreek