if (mysql_query(&mysql, "delete from books where books_id = 14")) { cout << "Error: Query[删除成功] fail." << endl; break; } cout << "Query[delete] success." << endl;将这段c++代码中的books_id换成可输入的变量
时间: 2024-02-20 11:01:43 浏览: 25
可以将变量作为参数传递给SQL语句,示例代码如下:
```
int book_id;
cout << "请输入要删除的书籍ID:";
cin >> book_id;
string query = "DELETE FROM books WHERE books_id = " + to_string(book_id);
if (mysql_query(&mysql, query.c_str())) {
cout << "Error: Query[删除成功] fail." << endl;
break;
}
cout << "Query[delete] success." << endl;
```
需要注意的是,使用变量构造SQL语句时需要避免SQL注入攻击,可以使用参数化查询来提高安全性。
相关问题
cout << "确定删除ID为:" << book_id << "的数据吗?(是1/否0):"; cin >> delete_yn; if (delete_yn == 0) { cout << "取消删除"; break; } sql = "DELETE FROM books WHERE books_id = " + to_string(book_id); if (mysql_query(&mysql, sql.c_str())) { cout << "Error: Query[删除失败] fail." << endl; break; } cout << "删除成功Execution succeeded." << endl; break;详细解释一下这段代码
这段代码主要是用于删除 MySQL 数据库中的一条记录。下面是对代码的详细解释:
```c++
cout << "确定删除ID为:" << book_id << "的数据吗?(是1/否0):";
cin >> delete_yn;
if (delete_yn == 0) {
cout << "取消删除";
break;
}
```
上面这段代码是让用户确认是否删除数据,如果用户输入 0,则表示取消删除,程序结束。如果用户输入了 1,则继续执行下面的代码。
```c++
sql = "DELETE FROM books WHERE books_id = " + to_string(book_id);
if (mysql_query(&mysql, sql.c_str())) {
cout << "Error: Query[删除失败] fail." << endl;
break;
}
cout << "删除成功Execution succeeded." << endl;
break;
```
这里使用 SQL 语句 `DELETE FROM books WHERE books_id = book_id` 删除了 books 表中主键为 book_id 的记录。如果删除失败,则输出错误信息,程序结束。如果删除成功,则输出提示信息,并结束程序。
需要注意的是,这段代码使用了 MySQL C API,需要连接到 MySQL 数据库。同时,这里没有给出连接 MySQL 数据库的代码,在实际项目中需要自己添加。
case 4: int book_id; cout << "请输入要删除的书籍ID:"; 报错“ret”的初始化操作由“case”标签跳过 cin >> book_id; string query = "DELETE FROM books WHERE books_id = " + to_string(book_id); if (mysql_query(&mysql, query.c_str())) { cout << "Error: Query[删除成功] fail." << endl; break; } cout << "Query[delete] success." << endl; break; }
这个错误是因为在C++中,switch语句中的每个case标签都必须以一个语句开始。您的代码中,第一个case标签后面没有语句,而是直接定义了一个变量。这是不允许的,因此编译器会报错。要解决这个问题,您可以将变量的定义移到case标签前面,或者在第一个case标签后面添加一条空语句,例如:
```
case 4:
{
int book_id;
cout << "请输入要删除的书籍ID:";
cin >> book_id;
string query = "DELETE FROM books WHERE books_id = " + to_string(book_id);
if (mysql_query(&mysql, query.c_str())) {
cout << "Error: Query[删除成功] fail." << endl;
break;
}
cout << "Query[delete] success." << endl;
break;
}
```
这样就可以避免编译器报错了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)