2016-09-21 3 views
0

У меня проблема с моим подключением odbc через PHP. Существует база данных называется statistics.mdb, где несколько информация хранится в базе данных В этом есть две таблицы:. - Оборот ESHOP - МагазиныMDB/ODBC с PHP - неправильный/сгруппированный результат запроса

таблице «Магазины» гораздо меньше, чем «Оборот 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» выглядит следующим образом (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» извлек данные из таблицы «Оборот» вместо «Turnover EShop» ... Поэтому мне пришлось использовать [] вокруг имени таблицы.

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

Так что я могу быть продуктивным в настоящее время ;-) THX

+1

Абсолютно, в поле и таблицы MS Access имен с пространством или специальных символов или зарезервированные слова должны быть заключены в квадратные скобки. Кроме того, массивы PHP основаны на нуле, поэтому первый столбец * OrderID * будет '$ row [0]', а второй столбец, * ProductName *, будет '$ row [1]'. – Parfait

Смежные вопросы