<br />
<b>Deprecated</b>: Function mysql_numrows() is deprecated in <b>/home/u220421318/public_html/lib/mysql.php</b> on line <b>313</b><br />
<br />
<b>Deprecated</b>: Function mysql_numrows() is deprecated in <b>/home/u220421318/public_html/lib/mysql.php</b> on line <b>313</b><br />
{"status":"success","msg":""}
意思是 MySQL 的 mysql_numrows() 已經被廢棄了, 網搜結果發現, 整個 mysql 函式庫在 PHP 2.5.5 版就被廢棄不能用了, 應該改用 mysqli 函式庫 (i 是 improved 的意思). 這個 Hostinger 主機使用的正是 PHP 2.5.5, 我在本機測試使用的是 Appserv 的 2.5.4 版, 難怪我的 EasyuiCMS 在其他主機都沒問題, 在 Hostinger 卻出問題. 參考 :
# mysql_num_rows replacment to recomend?
# mysql_ deprecated
PHP 的資料庫存取從最早的 mysql 函式庫, 因為安全性緣故進階到物件化的 mysqli, 甚至抽象化的 PDO, 其差異詳見下面這篇 :
# 淺談 PHP-MySQL, PHP-MySQLi, PDO 的差異
為了讓 EasyuiCMS 能在 Hostinger 上跑, 我參考了下列網站的說明文件, 把 /lib 下的 mysql.php 複製一份到 mysqli.php 進行修改 :
# mysqli 函式
# 'MySQLi' for Beginners
# PHP 5 MySQLi Functions
修改的部分主要是將 mysql_ 字頭的函式名稱改成 mysqli_ 開頭, 因為 mysql 函式全部在 mysqli 都有實作, 除了 mysqli_select_db() 與 mysqli_query() 這兩個參數先後顛倒, mysql_numrows() 改為 mysql_num_rows()外, 主要差別就是 mysqli 字頭而已. 修改的部分如下 :
舊 : $conn=mysql_connect($address, $username, $password)
新 : $conn=mysqli_connect($address, $username, $password)
舊 : $result=mysql_select_db($SQL, $conn)
新 : $result=mysqli_select_db($conn, $database)
舊 : $result=mysql_query($SQL, $conn)
新 : $result=mysqli_query($conn, $SQL)
舊 : mysql_numrows($result)
新 : mysqli_num_rows($result)
舊 : mysql_fetch_array($result)
新 : mysqli_fetch_array($result)
舊 : mysql_error($conn)
新 : mysqli_error($conn)
舊 : mysql_free_result($result)
新 : mysqli_free_result($result)
舊 : mysql_close($conn)
新 : mysqli_close($conn)
舊 : mysql_fetch_array($result)
新 : mysqli_fetch_array($result)
舊 : mysql_num_rows($result)
新 : mysqli_num_rows($result)
舊 : mysql_fetch_row($result)
新 : mysqli_fetch_row($result)
舊 : mysql_num_fields($result)
新 : mysqli_num_fields($result)
舊 : mysql_fetch_field($result, $i)
新 : mysqli_fetch_field($result)
新增 mysqli.php 函式庫後, 架站系統其他檔案如 index.php, main.php, sys.php 與應用程式也都要修改匯入的資料庫函式庫為 mysqli.php, 經過這樣改版後再次上傳 Hostinger 已可正常運作矣. 從去年 5 月寫好 EasyuiCMS 後, 已過了九個月才改為第二版, 最近還要將前陣子移植到 GAE 所發現的缺失再進行細部修改, 增進安全性考慮以便今年完成工作日誌改版.
至於 PDO, 利用抽象層來介接各種資料庫似乎是不錯的做法, 但效能會不會較差一些呢? 等了解用法做個充分測試再來決定要不要改版到 PDO 版.
2016-02-24 補充 :
記一下 Hosting.com 後台管理入口的撇步, 因為我常迷路. 登入後會先進入後台首頁 (Home) 如下 :
你要點第一個 Hosting 才會進入主機帳號管理畫面 :
點選要進入帳號的 Status 欄位中的 "Active", 底下就會出現四個按鈕, 按第一個 "Manage" 即可進入此帳號的後台管理畫面.
沒有留言:
張貼留言