case 3: cout << "按作者名查找图书信息\n" << endl; cout << "请输入要查询的作者名字:"; cin >> book_author; // 修正变量名 query = "select * from books where author = '" + book_author + "'"; if (mysql_query(&mysql, query.c_str())) { cout << "Error: Query[查询成功] fail." << mysql_error(&mysql)<<endl; break; } res = mysql_store_result(&mysql); row = mysql_fetch_row(res); if (row) { // 判断查询结果是否为空 cout << "编号: " << row[0] << " 书名: " << row[1] << " 当前数量: " << row[2] << " 价格:¥" << row[3] << " 作者:" << row[4] << endl; } else { cout << "未找到相关图书信息" << endl; } break; } break;运行后为什么没有出现图书信息而是输出Error: Query[查询成功] fail.Unknown column 'author' in 'where clause'
时间: 2024-02-23 19:56:59 浏览: 18
根据输出信息,错误原因是查询语句中的列名'author'在表中不存在。这可能是由于您的表结构与代码中的查询语句不匹配导致的。您可以尝试以下几个方面进行排查:
1. 检查表结构,确保表中存在名为'author'的列。
2. 检查查询语句中的列名是否正确,是否与实际的表结构一致。
3. 检查MySQL用户的权限是否足够执行查询操作。
如果以上检查都没有问题,建议您尝试打印mysql_error(&mysql)函数的返回值,查看更具体的错误信息,以便更好地定位问题。
相关问题
case 3: cout << "按作者名查找图书信息\n" << endl; cout << "请输入要查询的作者名字:"; cin >> book_id; query = "select * from books where author = '" + book_author + "'"; if (mysql_query(&mysql, query.c_str())) { cout << "Error: Query[查询成功] fail." << endl; break; } res = mysql_store_result(&mysql); //查询结果集 row = mysql_fetch_row(res); cout << "编号: " << row[0] << " 书名: " << row[1] << " 当前数量: " << row[2] << " 价格:¥" << row[3] << " 作者:" << row[4] << endl; break;为什么输入作者名字后控制台会陷入死循环
代码中的问题在于读取作者名字时使用了错误的变量名,导致查询语句中的变量没有被正确赋值,从而查询结果为空,程序陷入死循环。具体来说,代码中使用的变量名是 `book_id`,而实际上应该使用的是 `book_author`。
下面是修改后的代码:
```
case 3:
cout << "按作者名查找图书信息\n" << endl;
cout << "请输入要查询的作者名字:";
cin >> book_author; // 修正变量名
query = "select * from books where author = '" + book_author + "'";
if (mysql_query(&mysql, query.c_str())) {
cout << "Error: Query[查询成功] fail." << endl;
break;
}
res = mysql_store_result(&mysql);
row = mysql_fetch_row(res);
if (row) { // 判断查询结果是否为空
cout << "编号: " << row[0] << " 书名: " << row[1] << " 当前数量: " << row[2] << " 价格:¥" << row[3] << " 作者:" << row[4] << endl;
} else {
cout << "未找到相关图书信息" << endl;
}
break;
```
修改后的代码会先读取用户输入的作者名字,并使用该名字生成查询语句。接着,查询语句会被发送给 MySQL 数据库进行查询,查询结果会被存储在 `res` 变量中。如果查询结果不为空,则会输出查询结果;否则,会输出提示信息“未找到相关图书信息”。
switch (n) { case 1: cout << "The number is 1" << endl; case 2: cout << "The number is 2" << endl; break; default: cout << "The number is not 1 or 2" << endl; }
这段代码是一个 switch 语句,用于根据变量 n 的值输出不同的结果。
当 n 的值为 1 时,会依次执行 case 1 和 case 2 中的语句,所以输出结果为:The number is 1 The number is 2。
当 n 的值为 2 时,会执行 case 2 中的语句,输出结果为:The number is 2。
当 n 的值不为 1 或 2 时,会执行 default 中的语句,输出结果为:The number is not 1 or 2。