6

データベースのすべてのログイン情報を、次のような変数のパブリック ツリーの外部にあるファイルに保存します。

$hostname = '172.0.0.0';
$dbname = 'myname_mydbname';
$username = 'myname_user';
$pw = 'password';

それはかなり標準的です。

問題は、私が使用しているこの特定のホスティングではmyname_、すべてのデータベースとユーザー名の前に を追加する必要があることです。これらの文字列を保存して PDO に渡すと、myname の後のユーザー名のすべてが削除され、パスワード文字列がすべて削除されます... ユーザー名とパスワードを変数の代わりに文字列として関数に入れると、すべてが機能します。私は途方に暮れています。誰でも助けることができますか?コード内の関数は次のとおりです。

動作しません:

$this -> DB = new PDO ("mysql:host={$hostname}; dbname={$dbname}", $username, $pw);

作品:

$this -> DB = new PDO ("mysql:host={$hostname};dbname={$dbname}", 'myname_user', 'password');

ここの誰かが私をバカにしてくれることを願っています...よろしくお願いします。-デビッド

エラーが役立つかもしれません...

DB ハンドルの取得に失敗しました: SQLSTATE[28000] [1045] ユーザー 'myname'@'localhost' のアクセスが拒否されました (パスワードを使用: NO)

4

3 に答える 3

0

PDO ドキュメントで見つけることができるものは、DSN 文字列でユーザー名またはパスワードを指定できることを示唆しているものはありません。これは、「データベース ソース名と認証」文字列ではなく「データベース ソース名」です。パスワードを使用していないという事実は、ヒントになるはずです。これ、およびユーザー名が「myname」であるのは、おそらく、何も指定されていない場合、ほとんどの RDBM が $USER 環境変数を使用して接続するためです (「myname」に設定されていると想定する必要があります)。

つまり、追加のパラメーターを使用して認証資格情報を渡すだけでよいと思います

于 2010-10-13T23:14:17.537 に答える
0

回避策として、文字列を返す情報が格納されているファイルに get 関数を作成しましたが、それは機能します。とても奇妙ですが、うまくいきます。

于 2010-10-13T23:34:14.313 に答える