2012-06-14 4 views
0

Я нахожусь на пути к изучению PDO с phpro.org и немного путаю.PDO База данных запросов ODBC

<?php 
try { 
    $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\pdo-tutorial.mdb;Uid=Admin"); 
    } 
catch (PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
?> 

Что такое Uid? и какое значение я должен ввести?

И о запросе

<?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<br />'; 

    /*** 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.'<br />'; 
    } 

    /*** close the database connection ***/ 
    $dbh = null; 
} 
catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
?> 

Я использую ODBC, но почему функции Foreach только эхо первого ряда, не зацикливание вторя всю свою ценность в базе данных? вот результат.

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

Вы можете мне сказать, почему?

ответ

1

Для вашего второго вопроса:

Вы должны использовать fetchAll() вместо fetch(), который дает вам только одну строку за один раз.

В вашем коде, попробуйте: $result = $stmt->fetchAll(PDO::FETCH_ASSOC); (хотя это изменит вашу петлю foreach).

В качестве альтернативы, вы можете использовать время цикла для выборки каждой строки, как вам нужно:

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

Uid является Имя пользователя, с которым вы хотите подключиться к базе данных, если ваш файл MDB не защищен, вы можете опустить этот параметр.

Для получения всех результатов вы должны использовать fetchAll (http://php.net/manual/en/pdostatement.fetchall.php).