0

このコードを使用してテーブルの行を一覧表示すると、エラーが発生します

// Specify your table name
$table_name = 'table_stats';
$hostname = '172.16.11.2';
$username = 'user_stats';
$password = 'stats';
$dbname = 'db_stats';


$dbh  = new PDO("mysql:$hostname;dbname=$dbname",$username,$password);
$stmt = $dbh->query("SELECT * FROM $table_name", PDO::FETCH_ASSOC);
foreach($stmt as $row) { // PDOStatement implement Traversable interface, so you can just loop over the resultset. Sweet!
    print_r($row);
}

?>

そして私はこのエラーを受け取ります

 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)' in /home/mahmedne/public_html/android/updates/test.php:12 Stack trace: #0 /home/mahmedne/public_html/android/updates/test.php(12): PDO->__construct('mysql:172.16.25...', 'mahmedne_stats', 'stats') #1 {main} thrown in /home/mahmedne/public_html/android/updates/test.php on line 12

次のように接続した場合、同じ値を使用して、データベース設定が100%正しいことを確認できます

     if (!mysql_connect($db_host, $db_user, $db_pwd))
         die("Can't connect to database");

それからそれは動作しますが、私は新しいPDO()を実行しません

アドバイスしてください、私がPHPの限られた機能を提供している可能性はありますか?ローカルマシンではなく、ウェブホストでこのコードをチェックしています

これがphpinfo()を使用して取得したPDO関連の情報です

PDO

PDO support enabled
PDO drivers sqlite, sqlite2, mysql

pdo_mysql

PDO Driver for MySQL    enabled
Client API version  5.1.65

Directive   Local Value Master Value
pdo_mysql.default_socket    /var/lib/mysql/mysql.sock   /var/lib/mysql/mysql.sock

pdo_sqlite

PDO Driver for SQLite 3.x   enabled
SQLite Library  3.7.7.1

ありがとう、

4

1 に答える 1

2

DSN 文字列に欠落host=があります。次のようになるはずです。

new PDO("mysql:host=$hostname;dbname=$dbname",$username,$password);
于 2012-12-10T06:49:55.220 に答える