MDB / ODBC与PHP - 错误/分组查询结果

时间:2016-09-21 08:32:24

标签: php sql ms-access odbc

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

表“商店”比“营业额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' }

有结果,即使是正确的结果。但是表格“Turnover 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

最后,结果是:超级产品77(只需一次......)但它应该有两次......

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

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

感谢你的支持,祝你有个美好的一天

1 个答案:

答案 0 :(得分:1)

我明白了!

问题解决起来非常简单...... 羞耻

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

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

所以我现在可以提高效率;-) THX