2013-08-21 48 views
1

我正在將我的代碼從使用PHP中的mysql移動到mysqli。爲了使mysqli get_result()函數正常工作,我需要安裝mysqlnd作爲said here on SO。這包括拆除現有的PHP MySQL擴展,現在我只是想確保(你們誰這樣做),一旦我刪除了MySQL:將安裝mysqlnd打破PHP中使用mysql的現有代碼?

yum remove php-mysql 

與安裝mysqlnd:

yum install php-mysqlnd 

使用mysql的其他代碼(有很多現有的代碼庫)仍然可以工作?

我的PHP版本是27年3月5日

+0

@CeesTimmerman mysqli據我所知還準備了一些陳述? – Nikola

回答

1

我想通常回答說,不刪除php-mysql並安裝php-mysqlnd是不安全的,特別是如果你不是「服務器人」。因爲一旦我刪除了php-mysql,我就刪除了phpmyadmin,這真是一場災難。我最終(在Rackspace服務器傢伙的幫助下)將我的PHP升級到5.4(直到我將我的所有代碼轉換爲使用mysqli之前,無法升級到5.5),然後手動強制安裝php54-mysqlnd-5.4.17-1.ius.el6.x86_64http://dev.mysql.com/downloads/connector/php-mysqlnd/) ,因爲錯誤而試圖做到「正常的方式」Error: php54-mysql conflicts with php54-mysqlnd-5.4.17-1.ius.el6.x86_64。希望這可以幫助某人。

+2

我知道這是舊的,只是來橫行,但爲什麼手動下載和上傳phpmyadmin是一個災難?我會使用他們網站的新鮮軟件包,他們會更新和修復很多。 – DanFromGermany

+3

這是系統管理員失敗 - 不是代碼失敗。 根據我的經驗,升級沒有造成任何問題。 如果你在Debian上,'apt-get install php5-mysqlnd'工作正常,不會破壞任何東西。 –

+1

我會說這不是庫的問題,但管理員的錯誤不瞭解包裝系統或包裝中的故障。如果php-mysql和php-mysqlnd包都具有相同的依賴關係,包括phpmyadmin,那麼可以簡單地安裝php-mysqlnd並解決明顯的衝突(導致php-mysql被卸載)。我只是在Ubuntu 14.04上執行此操作而沒有任何問題。 –

6

隨着雙方的php-mysqlphp-mysqlnd你有mysqlmysqliPDO司機都在一起。如果你只需要mysqli驅動程序,你已經有了php-mysql

但是,如果你想遷移到MySQL的本地驅動程序根據文檔中,你一定要注意這些:

--The新mysqlnd庫需要使用MySQL 4.1中的新 41個字節的密碼格式。繼續使用舊的16字節密碼 將導致mysql_connect()和類似函數發出錯誤, 「mysqlnd無法使用舊認證連接到MySQL 4.1+」。

- 新的mysqlnd庫不像舊的libmysqlclient庫那樣讀取mysql配置文件 (my.cnf/my.ini)。如果您的 代碼依賴於配置文件中的設置,則可以使用mysqli_options()函數顯式加載它 。請注意,這意味着 PDO特定常量PDO :: MYSQL_ATTR_READ_DEFAULT_FILE和 PDO :: MYSQL_ATTR_READ_DEFAULT_GROUP未定義,如果 PDO中的MySQL支持使用mysqlnd編譯。

通常,您從MySQL驅動程序遷移到MySQL本地驅動程序時沒有任何問題。還建議使用php-mysqlnd代替php-mysql。