PDO如何连接MSSQL和ORACLE数据库?
发现PHP用在传统企业(用MSSQL、ORACLE数据库的企业)真的好少啊。
最近有个项目,需要在开发、生产环境都能部署PHP系统,用PDO对象,要访问MYSQL、MSSQL、ORACLE这几种数据库。
请问该怎么实现,用PHP的PDO在mac、windows、windows server下配置访问这些数据库?mssql版本最低2005,目前用的xampp集成环境。
如果不行,只有换成.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,目前用的xampp集成环境。
如果不行,只有换成.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了。
呵呵。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_

データインポート方法:1。SQLLOADERユーティリティを使用します。データファイルを準備し、制御ファイルを作成し、SQLLoaderを実行します。 2。IMP/EXPツールを使用します。データをエクスポートし、データをインポートします。ヒント:1。ビッグデータセットに推奨されるSQL*ローダー。 2。ターゲットテーブルが存在する必要があり、列定義が一致します。 3。インポート後、データの整合性を検証する必要があります。

Oracleインストール障害のためのアンインストールメソッド:Oracleサービスを閉じ、Oracleプログラムファイルとレジストリキーを削除し、Oracle環境変数をアンインストールし、コンピューターを再起動します。アンインストールが失敗した場合、Oracle Universal Uninstallツールを使用して手動でアンインストールできます。

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

Oracleテーブルの作成には、次の手順が含まれます。作成テーブルの構文を使用して、テーブル名、列名、データ型、制約、およびデフォルト値を指定します。テーブル名は簡潔で説明的である必要があり、30文字を超えてはなりません。列名は説明的でなければならず、データ型は列に保存されているデータ型を指定します。 NOT NULL制約により、列でnull値が許可されていないことが保証され、デフォルト句は列のデフォルト値を指定します。テーブルの一意の記録を識別する主要なキーの制約。外部キーの制約は、表の列が別のテーブルの主キーを指していることを指定します。主要なキー、一意の制約、デフォルト値を含むサンプルテーブル学生の作成を参照してください。

Oracle Garbledの問題は、データベース文字セットをチェックしてデータと一致するようにすることで解決できます。データベースに一致するようにクライアント文字を設定します。データを変換するか、列文字セットを変更してデータベース文字セットに一致させます。 Unicode文字セットを使用して、マルチバイト文字セットを避けます。データベースとクライアントの言語設定が正しいことを確認してください。

Oracle View暗号化により、ビュー内のデータを暗号化でき、それにより機密情報のセキュリティが強化されます。手順には以下が含まれます。1)マスター暗号化キー(MEK)の作成。 2)暗号化されたビューを作成し、暗号化されるビューとMEKを指定します。 3)暗号化されたビューにアクセスすることをユーザーに許可します。暗号化されたビューがどのように機能するか:ユーザーが暗号化されたビューを求めてクエリをするとき、OracleはMEKを使用してデータを復号化し、認定ユーザーのみが読み取り可能なデータにアクセスできるようにします。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。
