8

PHPコードでPDOモジュールを使用してデータベースに接続しようとしています。私は同様のトピックを読んで検索しましたが、何が間違っているのか理解できません。問題を解決するのを手伝ってください。

  1. Apacheバージョン:Apache / 2.2.21(Win32)PHP / 5.3.10

  2. php.iniファイルで、次の行のコメントを解除しました:extension = php_mysql.dll

    2a。phpinfo関数は「ロードされた構成ファイル」の場所がC:\ php\php.iniであることを示しました

    2b。phpinfo関数によって表示されるPDOドライバー情報:PDOセクション:PDOドライバー-> MySQL(有効)PDOドライバーfor MySQLセクション:クライアントAPIバージョン-> mysqlnd 5.0.8-dev-20102224-$リビジョン:321634 $(有効) )。

データベースへの接続に使用したコード

$db_user = "uid";
$db_pass = "pd";

$db_connect = new PDO('mysql:host=locahost; dbname=practice; charset=UTF-8', $db_user, $db_pass);
if($db_connect){
    print "connected to the db " . "<br />";
} else{
    print "error connects to the db. " . mysql_error();
}

私が受け取ったエラーメッセージ:

  • 警告:PDO :: __construct()[pdo .--construct]:php_network_getaddresses:getaddrinfoが失敗しました:そのようなホストは不明です。C:\ server \ htdocs \ html-exer \handle_reg3.phpの14行目
  • 警告:PDO :: __ Construct()[pdo .--construct]:[2002] php_network_getaddresses:getaddrinfoが失敗しました:そのようなホストは不明です。(14行目のC:\ server \ htdocs \ html-exer \ handle_reg3.phpで(tcp:// locahost:3306経由で接続しようとしています)
  • 致命的なエラー:キャッチされない例外'PDOException'とメッセージ'SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo failed:そのようなホストは不明です。'C:\ server \ htdocs \ html-exer \ handle_reg3.php:14スタックトレース:#0 C:\ server \ htdocs \ html-exer \ handle_reg3.php(14):PDO-> __construct(' mysql:host = loca ...'、' root'、' password')#1 {main}が14行目のC:\ server \ htdocs \ html-exer\handle_reg3.phpにスローされます

編集:間違いなくまもなく削除される詳細情報を求める回答を追加しました:

こんにちはあなたの常識:コードフラグメントをありがとう。それは私が問題を解決するのに役立ちました。文字セットが原因である可能性があります。これがデータベースに接続するための私のコードです

$dsn= 'mysql:host=localhost; dbname=practice; charset=utf8';
$db_user = "root";
$db_pass = "mypd";

 $db_connect = new PDO($dsn, $db_user, $db_pass);
 if($db_connect){
     print "connected to the db " . "<br />";
 }
4

4 に答える 4

10

サーバーがDSN ではなく
使用を誤って構成したようです。127.0.0.1localhost

$dsn = 'mysql:host=127.0.0.1; dbname=practice; charset=utf8';
$pdo = new PDO($dsn, $db_user, $db_pass, $opt);

エラーメッセージを読む必要があります。
PDOにローカルホストへの接続に問題があると表示されます。そのため、PDO接続文字列のアドレスを変更する必要があります。

また、間違った文字セット名を使用していました。修正しました

また、mysql_error()PDOでは役に立ちません。この関数を呼び出す必要はありません。すでにエラーがスローされています。

于 2013-02-14T06:38:11.343 に答える
3

他の誰かがグーグルからここに着陸した場合に備えて。まったく同じ問題が発生し、apacheを再起動すると修正されました。

于 2015-02-09T11:15:19.407 に答える
2

上記のすべての答えで問題が解決しない場合は、DSNのポート番号を指定してみてください。

$this->con = new PDO("mysql:host=localhost;port=3306;dbname=my_db","root","secret");

ここでは、Mysqlのデフォルトのポート番号である3306を使用しました。

于 2015-03-16T18:27:12.270 に答える
0

最初に行うことは、構成ファイルの接続パラメーターを再確認することです

これは当たり前のように思えるかもしれませんが、Symfonyプロジェクトのparameters.ymlを「適切な値」で構成したばかりなので、すぐには考えず、問題は別の場所にあると思いました。
私のdbnameはちょうど間違っていました!

于 2016-12-15T10:31:34.213 に答える