让我们加入 C++ MYSQL 库

Let Join C++ MYSQL library

我正在尝试使用 LEFT JOIN 访问“类别”table。我需要在此 table.

中检索字段“名称”

这是我的代码:

void Product::read(MYSQL *connection)
{
MYSQL_RES *result;
MYSQL_ROW row;

if(mysql_query(connection, "SELECT * FROM product LEFT JOIN category ON product.category=category.category_id"))
    std::cout<<"Query failed!!"<<mysql_error(connection)<<std::endl;
else
    result=mysql_store_result(connection);

if(result->row_count>0)
{
    while(row=mysql_fetch_row(result))
    {

        std::cout<<"Name: "<<row[1]<<" Brand: "<<row[3]<<" Price: "<<row[4]<<" Category: "<<row[5]<<" Amount: "<<row[6]<<std::endl;
    }
}
mysql_free_result(result);
}

这是查询的结果:

Name: Oneplus Nord 2 5G Brand: Oneplus Price: 299.99 Category: 1 Amount: 3
Name: Acer Swift 3 Brand: Acer Price: 899.99 Category: 2 Amount: 5
Name: Bose SoundLink Revolve Brand: Bose Price: 100.23 Category: 1 Amount: 3

如何显示类别名称?

您可以更具体地说明您要 select 哪些列及其顺序。而不是 * 你可以指定 table_name.column_name (或者如果你没有重叠则只是 column_name ,或者如果你想使用别名 alias_name.column_name ),所以你可以尝试类似的东西:

SELECT product.name, product.brand, product.price, category.name, product.amount FROM product LEFT JOIN category ON product.category=category.category_id

我假设列是如何命名的。

这样下面的代码将更容易预测,因为索引将基于您在 select.

中编写的内容
std::cout<<"Name: "<<row[1]<<" Brand: "<<row[3]<<" Price: "<<row[4]<<" Category: "<<row[5]<<" Amount: "<<row[6]<<std::endl;