Querying MySQL tables


Querying MySQL tables

我正在开发其他程序。我有两张桌子产品和卖家。这些表是连接的,连接在卖方表中进行。我想显示"产品"表中的"产品名称",同时显示已输入产品的卖家。

这就是我显示产品表的方式:

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_nameseller_idsproduct_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.";";