【发布时间】:2014-12-07 18:33:27
【问题描述】:
我正在尝试使用 LEFT OUTER JOIN 连接到 3 个表。我不确定我这样做是否正确。
表格包括:费率、国家和服务类型
查询:
$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()【问题讨论】:
-
错误指向的行,可能不是问题 - 我认为它抛出了一个错误,因为 $result 由于 $con_db->exec($sql); 为空不返回任何东西。你为什么使用 exec(),而不是 query()?假设您使用 mysqli 对象连接到您的数据库。
-
@JonStory 谢谢。我正在使用 pdo
-
啊,当然,当您在问题标题中以大写字母“PDO”时,我没有发现任何线索:p - 我仍然会尝试使用更简单的查询(您知道的是返回结果)。如果这有效,只是您的查询没有返回任何内容 - 为什么要使用左外连接,您实际上想用这个查询做什么?
-
@JonStory 我指的是
countries和service_types表,通过将它们的ID 与rates表上的ID 连接起来来获取国家名称和服务名称。然后将它们与rates表上的其他数据一起传递。
标签: php mysql pdo inner-join outer-join