mysqlcapi。从表中检索信息时出现问题解决方案

mysqlcapi。从表中检索信息时出现问题解决方案,mysql,c,api,Mysql,C,Api,我有一个显示菜单功能,可以根据给定的参数进行不同的查询。此函数必须调用必须打印所选信息的函数。然而,这并没有发生,row的值总是空的,但是如果我将整个print_row函数移动到display_菜单的主体中,它就可以正常工作。你能告诉我是什么原因导致这个问题,我怎样才能解决它 我的错误是愚蠢的。我忘了加上“!”在调用mysql\u query()之前。感谢@Strom在评论中注意到这一点 但是我又遇到了另一个问题:当我试图用一个特殊的函数向表中插入一些信息时,我实现了它但是当我试图显示我刚刚用“

我有一个显示菜单功能,可以根据给定的参数进行不同的查询。此函数必须调用必须打印所选信息的函数。然而,这并没有发生,row的值总是空的,但是如果我将整个print_row函数移动到display_菜单的主体中,它就可以正常工作。你能告诉我是什么原因导致这个问题,我怎样才能解决它

我的错误是愚蠢的。我忘了加上“!”在调用mysql\u query()之前。感谢@Strom在评论中注意到这一点

但是我又遇到了另一个问题:当我试图用一个特殊的函数向表中插入一些信息时,我实现了它但是当我试图显示我刚刚用“显示”菜单添加的内容时,它没有出现。问题在于我阅读这些类型的方式。我用fgets()读取它,但是fgets()也读取换行符,所以当我进行这些以代码表示的查询时,我没有考虑存储在dish表中“type”字符串后面的“\n”。我刚刚将fgets()更改为scanf(),因为scanf()不读取换行符

希望对某人有所帮助:)


是否确实调用了
print\u rows
?因为查看手册,它应该返回->零以获得成功。如果发生错误,则为非零。哦。。。真是个愚蠢的错误,非常感谢。但是现在我有另一个问题…编辑你的问题,或者如果它与原始问题太远,就打开一个新的问题。
    void display_menu(MYSQL* connect, int type)
 {
    if(type == snack || type == all){
        printf("*********************************** Snacks ******************************\n");
        if(!mysql_query(connect, "SELECT name, price FROM dish WHERE type = 'snack'"))
            print_rows(connect);
    }
    if(type == first || type == all){
        printf("******************************* First courses ***************************\n");
        if(mysql_query(connect, "SELECT name, price FROM dish WHERE type = 'first'"))
            print_rows(connect);
    }
    if(type == main_dish || type == all){
        printf("******************************** Main dishes ****************************\n");
        if(mysql_query(connect, "SELECT name, price FROM dish WHERE type = 'main'"))
            print_rows(connect);
    }
    if(type == dessert || type == all){
        printf("********************************** Desserts *****************************\n");
        if(mysql_query(connect, "SELECT name, price FROM dish WHERE type = 'dessert'"))
            print_rows(connect);
    }
    if(type == drink || type == all){
        printf("*********************************** Drinks ******************************\n");
        if(mysql_query(connect, "SELECT name, price FROM dish WHERE type = 'drink'"))
            print_rows(connect);
    printf("**************************************************************************\n");
    }
}

    /*
This functions prints out all the selected rows
 */
 void print_rows(MYSQL* connect)
 {
    result = mysql_store_result(connect);
    while((row = mysql_fetch_row(result))){
        printf("%s ", row[0] );
        printf("– %s czk\n", row[1]);
    }
    mysql_free_result(result);
 }