2013-01-18 68 views
1

我已經寫了很多使用mysqli_的代碼。問題是我現在需要將此代碼與使用mysql_的代碼集成在一起,並且負責連接,身份驗證等。我不想創建第二個連接,但mysql_缺少一些功能,例如,準備好的查詢。所以我想以某種方式神奇地將連接「導入」到mysqli。這甚至有可能嗎?如果是這樣,那怎麼做?在mysql_連接中使用mysqli_函數?

+3

難道你不能只是創建一個'mysqli_connect'連接? – George

+1

@ F4r-20,我並不完全有權訪問認證信息,另外,我不喜歡無緣無故地使用兩個連接的想法。但是因爲我目前正在尋找一個快速修復來整合我的代碼(並且希望稍後會做),所以我當然會考慮這個選項)) – Septagram

+1

你應該做的是擺脫所有的'mysql_'調用。如果要維護這個項目,那麼無論如何你都必須儘快完成。現在不妨做。 –

回答

-1

正如F4r-20指出的那樣,您可以改變連接數據庫的方式,並用msqli_替換mysql_函數!

試着決定你要在開始一個項目之前使用什麼,而不是在中間。準備節省了大量的時間和這樣的問題。


PS。下次我會用PDO。它很容易,快速,OOP並支持多種數據庫類型!


編輯:,因爲你沒有訪問憑據或如何連接到數據庫,你將不得不使用mysql_,更改爲mysqli_連接或建立新的連接...對不起:(

+2

認識,嗯。謝謝蒂姆。 – George

+1

是的,是的,是的! – cmbuckley

+0

AfterEdit:說實話,它必須在某個時候改變,也許OP應該建議那些現在可以完成它的人。 – George

0

不,那是不可能的。

順便說一句,準備語句是不是讓查詢安全的唯一途徑。
這是佔位符每個人都應該使用,而不一定必須使用預先準備的語句來實施。
使用mysql_ *函數也可以輕鬆實現佔位符

+1

安全性不是使用'mysqli'的唯一原因。另一個是性能:準備好的語句可以被緩存,因此不需要經過解析,優化和MySQL在內部查詢的其他內容。如果你只是逃避查詢中的所有字符串,這是相當安全的,但對於MySQL來說,這是一個新的查詢,所以它會慢很多。 – Septagram

0

mysql_connect創建的連接資源不能重複使用MySQLi擴展名。您將不得不在當前代碼中處理連接或重構舊代碼。

這並不像聽起來那麼難。 MySQLi也有一個過程接口,您可以像使用舊的MySQL擴展一樣使用擴展。 MySQLi最大的好處是面向對象的接口,它會使重構變得更復雜一些。庫MySQLi本身也支持(包裝到方法/函數),MySQL的功能,如準備好的語句,交易和連接的字符集,但這並不意味着你不能提交START TRANSACTIONSET CHARSET utf8就像你mysql_query

希望這樣做有助於。如果你有關於重構的更具體的問題,請隨時問:)

+0

我在等待評論 –