web-dev-qa-db-ja.com

データベースへのMySqlPDO接続

私はPDOを学んでいて、非常に混乱しています。以下のコードがありますが、すべて正しく見えますが、このエラーコードが表示され、修正するために何をする必要があるのか​​わかりません。助けてください。

_<?php
$hostname='localhost';
$username='root';
$password='';

try {
    $dbh = new PDO("mysql:Host=$hostname;dbname=stickercollections",$username,$password);
    echo 'Connected to Database<br/>';

    $sql = "SELECT * FROM stickercollections";
foreach ($dbh->query($sql) as $row)
    {
    echo $row["collection_brand"] ." - ". $row["collection_year"] ."<br/>";
    }


    $dbh = null;
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?> 
_

エラーコード:Invalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/GOTSWAPMAIN/index.php on line 11

6
Marc Guerin

エラーモードを増やしてみてください。

<?php
$hostname='localhost';
$username='root';
$password='';

try {
    $dbh = new PDO("mysql:Host=$hostname;dbname=stickercollections",$username,$password);

    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // <== add this line
    echo 'Connected to Database<br/>';

    $sql = "SELECT * FROM stickercollections";
foreach ($dbh->query($sql) as $row)
    {
    echo $row["collection_brand"] ." - ". $row["collection_year"] ."<br/>";
    }


    $dbh = null;
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?> 

編集:pdo.error-handling は、代わりに pdo.errorcode および pdostatement.errorcode (または同様)を使用して詳細情報を取得することもできますが、私はスロー例外は、解決されたホストなどではなく、不良接続を処理するためのより良い方法だと思います。

20
Anton Bessonov