PDO如何串連MSSQL和ORACLE資料庫?

來源:互聯網
上載者:User
發現PHP用在傳統企業(用MSSQL、ORACLE資料庫的企業)真的好少啊。

最近有個項目,需要在開發、生產環境都能部署PHP系統,用PDO對象,要訪問MYSQL、MSSQL、ORACLE這幾種資料庫。

請問該怎麼實現,用PHP的PDO在mac、windows、windows server下配置訪問這些資料庫?mssql版本最低2005,目前用的xamppIntegration Environment。

如果不行,只有換成.net了。。。
__
抱歉,可能我沒有完全說清楚。
我試過php手冊上的,並且開啟了extension=php_mssql.dll,extension=php_pdo_mssql.dll,但是無論使用$dsn = "mssql:host=10.1.1.1;dbname=test";還是$dsn = "dblib:host=10.1.1.1;dbname=test";。
在new pdo的時候,都會提示我錯誤:Uncaught exception 'PDOException' with message 'could not find driver'。

我在phpinfo那看到pdo drivers裡面只有mysql,pgsql,sqlite三項,猜想可能是因為mssql for pdo的驅動沒有,但是只搜尋到for windows的。
同時,看到在mac下用FreeTDS的(他沒有說是xampp還是什麼環境),但又需要xcode和另一個什麼組件,還要編譯,我就在想,難道沒有更簡潔一點的方法嗎?

所以,我想提一個比較完整的問題,希望有這方面實踐的高手能夠系統地解答一下,同時也方便搜尋引擎給sf導流(因為我發現搜尋引擎對sf的收錄率非常快),以後還有誰碰現類似的問題,不用再去多拼西湊地找方法嘗試,因為這真的非常費時間和精力,而且學不到東西。

回複內容:

發現PHP用在傳統企業(用MSSQL、ORACLE資料庫的企業)真的好少啊。

最近有個項目,需要在開發、生產環境都能部署PHP系統,用PDO對象,要訪問MYSQL、MSSQL、ORACLE這幾種資料庫。

請問該怎麼實現,用PHP的PDO在mac、windows、windows server下配置訪問這些資料庫?mssql版本最低2005,目前用的xamppIntegration Environment。

如果不行,只有換成.net了。。。
__
抱歉,可能我沒有完全說清楚。
我試過php手冊上的,並且開啟了extension=php_mssql.dll,extension=php_pdo_mssql.dll,但是無論使用$dsn = "mssql:host=10.1.1.1;dbname=test";還是$dsn = "dblib:host=10.1.1.1;dbname=test";。
在new pdo的時候,都會提示我錯誤:Uncaught exception 'PDOException' with message 'could not find driver'。

我在phpinfo那看到pdo drivers裡面只有mysql,pgsql,sqlite三項,猜想可能是因為mssql for pdo的驅動沒有,但是只搜尋到for windows的。
同時,看到在mac下用FreeTDS的(他沒有說是xampp還是什麼環境),但又需要xcode和另一個什麼組件,還要編譯,我就在想,難道沒有更簡潔一點的方法嗎?

所以,我想提一個比較完整的問題,希望有這方面實踐的高手能夠系統地解答一下,同時也方便搜尋引擎給sf導流(因為我發現搜尋引擎對sf的收錄率非常快),以後還有誰碰現類似的問題,不用再去多拼西湊地找方法嘗試,因為這真的非常費時間和精力,而且學不到東西。

Windows版PHP內建了Oracle驅動,在ext目錄下:
php_oci8.dll
php_oci8_11g.dll
php_pdo_oci.dll
Linux上如果自己編譯的話則添加下面的configure配置項,比如:
--with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib
--with-pdo-oci=shared,instantclient,/usr/lib/oracle,11.2
Oracle Instant Client下載地址(60MB):
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

SQL Server Driver for PHP (php_sqlsrv.dll和php_pdo_sqlsrv.dll,僅支援Windows):
http://www.microsoft.com/en-us/download/confirmation.aspx?id=20098
Linux上訪問SQL Server可以用unixODBC+FreeTDS
FreeTDS: UNIX/Linux下串連SQL Server和Sybase的驅動.
--with-pdo-dblib=DIR PDO: DBLIB-DB support. DIR is the FreeTDS home directory
unixODBC是資料來源管理器,管理由各種資料驅動建立的資料來源名稱.
FreeTDS是免費的SQL Server/Sybase在UNIX/Linux體系中的驅動程式,
可以由unixODBC建立資料來源名稱,通過名稱訪問資料.

所以說PHP的話還是用MySQL簡單,因為PHP原始碼直接內建了MySQL驅動mysqlnd,基於mysqlnd提供mysqli/pdo_mysql支援.當然了,PHP也內建了SQLite引擎.

http://php.net/manual/zh/ref.pdo-oci.php
http://php.net/manual/zh/ref.pdo-dblib.php

其實我想說的是 php編譯忒麻煩了 我一般選個整合整合環境 基本上就是右鍵菜單一勾的事

@murmur google出來的前幾個基本是在stackoverflow上,我也大概瀏覽了一下,基本都像你這樣回答的:丟個php.net的連結,或是微軟碟機動的連結。
或許是我不懂英文,看不明白吧,如果我英文好,也不上segmentfault了。
呵呵。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.