PDO Query Database ODBC

Estou a caminho de aprender sobre PDO da phpro.org e um pouco confuso.

getMessage(); } ?> 

O que é o Uid? e qual o valor que devo inserir?

E, sobre a consulta

 <?php try { $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\pdo-tutorial.mdb;Uid=Admin"); /*** echo a message saying we have connected ***/ echo 'Connected to database
'; /*** The SQL SELECT statement ***/ $sql = "SELECT * FROM animals"; /*** fetch into an PDOStatement object ***/ $stmt = $dbh->query($sql); /*** echo number of columns ***/ $result = $stmt->fetch(PDO::FETCH_ASSOC); /*** loop over the object directly ***/ foreach($result as $key=>$val) { echo $key.' - '.$val.'
'; } /*** close the database connection ***/ $dbh = null; } catch(PDOException $e) { echo $e->getMessage(); } ?>

Estou usando odbc, mas por que as funções foreach apenas ecoam a primeira linha, não fazendo o loop fazendo eco de todo o meu valor no database? Aqui estão os resultados.

 Connected to database ID - 1 animal_type - kookaburra animal_name - bruce 

Pode me dizer por quê?

Para sua segunda pergunta:

Você precisa usar fetchAll() vez de fetch() , que só lhe dá uma linha por vez.

No seu código, tente: $result = $stmt->fetchAll(PDO::FETCH_ASSOC); (embora isso altere o aspecto do seu loop foreach).

Alternativamente, você pode usar um loop while para buscar cada linha conforme você precisar:

 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){ //Do something with $row } 

Uid é o nome de usuário com o qual você deseja se conectar ao database, se seu arquivo mdb não estiver protegido, você pode omitir esse parâmetro.

Para buscar todos os resultados, você deve usar fetchAll (http://php.net/manual/en/pdostatement.fetchall.php).