为什么我的PDO不工作?

I am starting to use PDO and I successfully connected to MySQL using PDO. However, when I try to SELECT stuff from my DB, nothing happens. Nothing is echoed. (even though I have records in that table, and the column username exists) No error in my PHP log.

I am using MAMP and all PDO components seem to be working in phpinfo() (since I was able to connect to db in the first place)

Please let me know what could have gone wrong. Thanks a lot

    <?php
    try 
    {
        $connection = new PDO('mysql:host=localhost;dbname:my_db','my_username',
                              'xxxxxxx');   


            $stmt=$connection->prepare("SELECT * FROM users");
            $stmt->execute();

            while ($row=$stmt->fetch(PDO::FETCH_OBJ)){

                echo $row->username;
            }

    }

    catch(Exception $e)
    {
        echo "There was an error connecting to the database";
    }

    ?>

You need to tell PDO that you want it to throw exceptions:

$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Following your comment below, it is apparent that your DSN is incorrect. It should be:

$connection = new PDO('mysql:host=localhost;dbname=my_db','my_username','xxxxxxx');

Note that the syntax is dbname= rather than dbname: (which you had originally).

Why not ask PHP?

catch(Exception $e)
{
    die($e);
}

Looks like your either don't have data in that table or have an error:

Try to add this code after $stmt->execute();:

$arr = $sth->errorInfo();
print_r($arr);

First, get your query out of your PDO connection segment...

<?php
try 
{
    $connection = new PDO('mysql:host=localhost;dbname:my_db','my_username',
                          'xxxxxxx');
}

catch(Exception $e)
{
    echo "There was an error connecting to the database";
}
?>

Then, do it.

<?php
$SQL = 'SELECT * FROM users';
foreach($connection->query($SQL) as $row){
    print $row['username'] . "
".'<br />';
}
?>