我正在开发其他程序。我有两张桌子产品和卖家。这些表是连接的,连接在卖方表中进行。我想显示"产品"表中的"产品名称",同时显示已输入产品的卖家。
这就是我显示产品表的方式:
public function getProductName($product_id,$language_id) {
$query = $this->db->query("SELECT name FROM " . DB_PREFIX . "product_description WHERE
product_id = '".(int)$product_id."'
AND language_id = '".(int)$language_id."'");
if($query->row AND $query->row['name'] != '') {
return $query->row['name'];
} else {
return '-';
}
}
Seller表包含字段seller_name
、seller_id
、sproduct_id
。如何提取每个产品的关联卖家名称?
使用您的代码:
public function getProductName($product_id, $language_id)
{
$strSQL = "SELECT p.name, s.seller_name FROM " . DB_PREFIX .
"product_description p INNER JOIN " . DB_PREFIX .
"Seller s ON p.product_id = s.sproduct_id WHERE product_id = '" .
intval($product_id) . "' AND language_id = '" .
intval($language_id) . "'";
$query = $this->db->query($strSQL);
if($query->row AND $query->row['name'] != '') {
return $query->row['name'];
} else {
return '-';
}
}
如果product_id和language_id是整数值,则不需要将它们括在"中。还要记住添加错误检查,以确保$product_id和$language_id具有用于查询的有效值。有关SQL联接的详细信息。
您需要在公共product_id
键上将两个表连接在一起。这是您想要的Sql结果。此外,如果product_id和language_id是数据库中的整数(就像它们在PHP中一样),则可以删除":
"SELECT pd.name, s.seller_name
FROM " . DB_PREFIX . ".product_description pd
INNER JOIN " . DB_PREFIX . ".Seller s on pd.product_id = s.sproduct_id
WHERE
product_id = ".(int)$product_id."
AND language_id = ".(int)$language_id.";";