我尝试在两个都有id字段的表之间做一个简单的JOIN。我的结果是一个stdClass对象,因为我使用的是PDO。有谁知道我该如何区分第一个表的ID和第二个表的ID?
$sql = "SELECT * FROM products AS p products_categories AS c WHERE c.id = p.category"; $stmt = $connection->prepare($sql); $stmt->execute(); $products = array(); while($product = $stmt->fetchObject()) $products[] = $product; return $products;
如果我尝试使用$ products-> id,它将显示 类别 表的ID 。如果它是一个数组,则可以使用$ products [‘p.id’],我需要一个替代方法。
非常感谢。
您必须为id一个表或另一个表中的列赋予列别名,以使列名称不同。
id
这意味着您不能使用“ SELECT *”,而必须拼出要从该表中获取的 所有 列名。至少您仍然可以查询category.*是否要所有这些列都没有别名。
SELECT *
category.*
顺便说一句,这类问题是避免id在每个表的主键中使用通用名称(如“ ” )的好理由。而是使用更具描述性的名称,例如product_id和category_id。这样就不会出现列名冲突的问题。
product_id
category_id