Я пытаюсь подключиться к 3 таблицам, используя LEFT OUTER JOIN. Я не уверен, правильно ли я это делаю.
Таблицы являются: цены, страны и типы услуг
Запрос:
$sql = "SELECT rates.rate_id, rates.initial_change, service_types.service, countries.country
FROM rates
LEFT OUTER JOIN service_types ON rates.service_id = service_types.serviceType_id
LEFT OUTER JOIN countries ON rates.from_id = country.country_id
LEFT OUTER JOIN countries ON rates.to_id = country.country_id
ORDER BY service_types.serviceType_id ASC";
$statement = $con_db->exec($sql);
$result = $statement->fetchAll();//error points to this line
Это сообщение об ошибке:
Фатальная ошибка: Вызов функции-члена fetchAll () для необъекта в
Одна вещь, которую я заметил, это то, что ваш доступ к вашим таблицам неверен. Я предполагаю, что SQL является недопустимым, который возвращает нуль из exec
, Попробуйте изменить свой запрос на это:
$sql = "SELECT rates.rate_id, rates.initial_change, service_types.service, countries1.country, countries2.country
FROM rates
LEFT OUTER JOIN service_types ON rates.service_id = service_types.serviceType_id
LEFT OUTER JOIN countries as countries1 ON rates.from_id = countries1.country_id
LEFT OUTER JOIN countries as countries2 ON rates.to_id = countries2.country_id
ORDER BY service_types.serviceType_id ASC";
Обратите внимание, что страна изменилась на страны1 & country2 в условии соединения, а также столбцы в select.
Других решений пока нет …