2012-06-08 94 views
2

我正在寫一個PHP應用程序的新應用程序,作爲商業應用程序向公衆發佈。到目前爲止,我的經驗與PHP中的MySQL數據庫有關。PHP數據庫連接注意事項

最終用戶負責提供數據庫功能,PHP應用程序將簡單地連接並使用它。

我的問題是,因爲我不知道用戶將使用什麼數據庫,我該如何去支持這個PHP?

我的問題是:

  • 是ODBC的正確方法?我參考下面的ODBC,但是如果ODBC不是正確的使用方法,那麼相同的問題適用於建議的方法。

  • 難道我失去了使用ODBC函數在PHP中的MySQL的等價物的任何功能/特性?

  • 是否有相關的,我需要記住什麼安全?例如,我在以前的應用程序中使用了mysql_real_escape_string()。什麼是ODBC當量(它甚至需要?)

  • 我認爲PHP可以使用ODBC連接到MySQL數據庫? MySQL是否需要以某種方式進行配置才能實現?

  • 表現明智,是否可以接受ODBC?

回答

1

支持和性能,你最好的選擇很可能是PDO(PHP數據庫對象)。這是PHP的核心,支持所有主要的數據庫系統,本地處理轉義字符串等。

要保持不可知的,你不能使用MySQL的唯一的東西,例如LIMIT添加,不支持所有SQL數據庫。

但說了那麼,先檢查。如果客戶端有一個noSQL數據庫,或者使用亞馬遜獨特的連接字符串(例如),那麼你有麻煩了。

+0

我認爲PDO將覆蓋我的大部分基地。 MySQL,PostgreSQL,Informix,ODBC,Oracle都受支持。我發現這個教程在PDO中很有用http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/ – psynnott

1

我的問題是,因爲我不知道用戶會是什麼數據庫使用, 去有關在PHP支持這個有什麼辦法?

這裏是在PHP中使用數據庫抽象的鏈接。

數據庫抽象文庫的目的是在具有多個數據庫服務器通信來創建的均勻性。以這種方式考慮,爲了讓您的應用程序支持多個數據庫,它需要不同的代碼行來在每個數據庫上執行相同的功能。通過抽象庫,應用程序只需要一組代碼就可以與庫支持的任何數據庫進行通信。這極大地增加了可用於您的PHP應用程序的數據庫服務器選項的數量。

http://www.hosting.com/support/programming/using-adodb-to-build-a-database-agnostic-php-application

+0

請提供更多解釋,而不僅僅是一個鏈接作爲答案。 – Grigor

1

我可能標準化PDO;它抽象了大量的數據庫並提供了一個統一的界面,它是用C編寫的,大多數人都會默認安裝它。

此處謹慎使用;並非所有數據庫都支持相同的SQL語法,因此您可能必須爲此提供相應的規定。儘管這很棘手,但一種方法是在PDO和你的類之間定義一個輔助類;這個輔助類將業務邏輯調用轉換爲實際的SQL。您可以提供一個適用於MySQL的應用程序,並讓您的用戶創建其他應用程序? :)

+0

關於SQL語法的好處。聽起來像頭痛! – psynnott

+1

@psynnott是的,我相信教義圍繞這個問題開展工作......但是我確信它不是小事:)順便提一句,我已經加入了我的觀點,PDO是用C語言編寫的,而不是ADODB。可以指出,ADODB是純PHP,因此你不需要依賴,但是PDO在很多發行版中都會默認使用:) –