2016-09-21 73 views
0

我有一個問題,我通過PHP的odbc連接。有一個叫statistics.mdb其中一些信息存儲在數據庫在這個數據庫中有兩個表: - 營業額網上商店 - 商店MDB/ODBC與PHP - 錯誤/分組的查詢結果

表「商店」比「週轉網上商店」小得多。以下連接/查詢對錶「商店」沒有任何問題。但是當我嘗試將它與「營業額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' } 

有結果,甚至是正確的。但表「成交網上商店」看起來像這樣(simplyfied 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

我知道了!

的問題是如此簡單的解決... 恥辱

有所謂的「營業額」的另一個表。所以,「SELECT * FROM Turnover ... EShop」從表格「營業額」中取出數據,而不是「營業額EShop」......所以我必須在表名稱周圍使用[]。

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

所以我現在可以成爲生產力;-) THX

+1

當然,在空格或特殊字符或保留字MS Access字段名和表名應以方括號括起來。此外,PHP數組是基於零的,因此第一列* OrderID *將是'$ row [0]',而第二列* ProductName *將是'$ row [1]'。 – Parfait