【问题标题】:PDO Query Database ODBCPDO 查询数据库 ODBC
【发布时间】:2012-06-17 01:36:58
【问题描述】:

我正在从 phpro.org 学习 PDO,有点困惑。

<?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

你能告诉我为什么吗?

【问题讨论】:

    标签: php ms-access pdo odbc


    【解决方案1】:

    第二个问题:

    您需要使用fetchAll() 而不是fetch(),这一次只能给您一行。

    在您的代码中,尝试: $result = $stmt-&gt;fetchAll(PDO::FETCH_ASSOC);(虽然这会改变你的 foreach 循环的样子)。

    或者,您可以根据需要使用 while 循环来获取每一行:

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

    【讨论】:

      【解决方案2】:

      uid是你想连接数据库的用户名,如果你的mdb文件没有被保护你可以省略这个参数。

      要获取所有结果,您必须使用 fetchAll (http://php.net/manual/en/pdostatement.fetchall.php)。

      【讨论】:

        猜你喜欢
        • 2013-07-11
        • 2011-01-25
        • 1970-01-01
        • 2018-04-06
        • 2016-09-03
        • 2014-12-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多