【问题标题】:MDB/ODBC with PHP - wrong/grouped query result带有 PHP 的 MDB/ODBC - 错误/分组查询结果
【发布时间】:2016-09-21 08:32:24
【问题描述】:

我在 PHP 上的 odbc 连接有问题。有一个名为 statistics.mdb 的数据库,其中存储了一些信息。在这个数据库中有两个表: - 营业额网店 - 商店

表“Shops”比“Turnover EShop”小得多。以下连接/查询对“商店”表没有任何问题。但是当我尝试将它与“Turnover EShop”一起使用时,它会显示一个问题。

$pdo = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=O:\\Statistics\\statistics.mdb;Uid=Admin");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql  = "SELECT * FROM Turnover EShop WHERE ProductGroup = 'A22'"; 
$exec = $pdo->query($sql);

foreach ($exec as $row) { echo $row[1]."<br>"; //index Problem mentioned below: 1 = 'ProductName' }

有结果,即使是正确的。但是表格“营业额 EShop”看起来像这样(简化为 3 行):

OrderID: 1
ProductName: Super Product 77
ProductNo: 123-456
ProductGroup: A22

OrderID: 2
ProductName: Super Product 77
ProductNo: 123-456
ProductGroup: A22

OrderID: 3
ProductName: Product 12
ProductNo: 888-999
ProductGroup: B52

最后,结果是:Super Product 77(只有一次……)但应该有两次……

另一个有趣的事情是,通过使用$row['ProductName'],它只适用于“Shops”表。在更大的表“Turnover EShop”中,由于未定义的索引导致错误...所以我不得不使用与列数不匹配的数字。

foreach ($exec as $row) { echo $row[1]."<br>"; }

提前感谢您的支持,祝您有美好的一天

【问题讨论】:

    标签: php sql ms-access odbc


    【解决方案1】:

    我明白了!

    这个问题解决起来很简单……耻辱

    还有一个叫做“营业额”的表格。所以,“SELECT * FROM Turnover ... EShop”从表“Turnover”而不是“Turnover EShop”中取出数据......所以我不得不在表名周围使用[]。

    $sql  = "SELECT * FROM [Turnover EShop] WHERE ProductGroup = 'A22'"; 
    

    所以我现在可以有效率了 ;-) THX

    【讨论】:

    • 当然,在 MS Access 字段和表名中带有空格或特殊字符或保留字的应该用方括号括起来。此外,PHP 数组是从零开始的,因此第一列 OrderID 将是 $row[0],第二列 ProductName 将是 $row[1]
    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多