2013-10-30 50 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