2

一部のPHPコードをMysqliからPDOに変換しようとしていますが、PDO MySQL接続のデフォルトホストを(アプリケーションコードの外で)設定できる必要があります。

Mysqliを使用すると、次のphp.ini設定でこれを行うことができます。

mysqli.default_host = ip.of.mysql.server

そして、次のように接続します。

$link = mysqli_connect(null,  USERNAME,  PASSWORD, DATABASE);

それは私たちにとって美しく機能しました。


PDOの同等のコード:

$link = new PDO('mysql:dbname=' . DATABASE, USERNAME, PASSWORD);

同じようには機能しません。MySQLサーバーがローカルホスト上にある限り機能します。そうではありません。MySQLサーバーをホストしている別のマシンがあります。

php.iniPDOに必要なことを達成できる同等の設定はありますか?私が見つけた最も近いものはpdo_mysql.default_socket設定ですが、それでうまくいくとは思いません。

4

2 に答える 2

2

PDOのドキュメントによると、php.iniでpdo.dsnエイリアスを設定できます。

php.iniの場合:

pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"

PHPの場合:

$dbh = new PDO('mydb', $user, $password);

または、ホストを使用して、hostsファイルのIPアドレスを変更することもできます。それはアプリケーションコードの外です。

于 2012-02-23T18:43:02.227 に答える
1

ソケット接続は、ローカル接続でのみ役立ちます。ホストを明示的に指定する必要があります

mysql:host=123.123.123.1;dbname=MyDb

更新:何かを見つけました

http://php.net/pdo.configuration

私が見る限り、dsnsのエイリアスを定義できます。自分で試したわけではありませんが、

pdo.dsn.otherServer = mysql:host=example.com;dbname=foo

そして、それをPDO :: __construct()で使用できるはずです。

$pdo = new PDO('otherServer', $x, $y);

さらに、dsn-stringを含むファイルを指すコンストラクター引数としてファイルパスを指定できます。

$pdo = new PDO('uri:file///usr/share/connection.dsn', $x, $y);
// With file /usr/share/connection.dsn that contains: (and nothing more than)
mysql:host=example.com;dbname=foo
于 2012-02-23T18:31:51.477 に答える