From 2da456316c774a7438d2368a6a96513b9f36047d Mon Sep 17 00:00:00 2001 From: flykhan Date: Wed, 25 Oct 2023 14:37:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E8=B0=83=E5=87=BD=E6=95=B0v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cgi-bin/sqlite_cgi_base.c | 67 ++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/cgi-bin/sqlite_cgi_base.c b/cgi-bin/sqlite_cgi_base.c index 37d9d70..9b749b7 100644 --- a/cgi-bin/sqlite_cgi_base.c +++ b/cgi-bin/sqlite_cgi_base.c @@ -5,18 +5,20 @@ // sqlite3的回调函数 // sqlite 每查到一条记录,就调用一次这个回调 -int sql_search_callback(void* NotUsed, int argc, char** argv, char** azColName); +int sql_search_callback(void *NotUsed, int argc, char **argv, char **azColName); -int main(int argc, char const* argv[]) { +int main(int argc, char const *argv[]) +{ // 连接到 SQLite 数据库 - sqlite3* db; // 声明 sqlite3 类型变量,即声明一个数据库对象 - char* zErrMsg = 0; // 用于存储错误信息 - int rc; // 用于存储函数返回值 + sqlite3 *db; // 声明 sqlite3 类型变量,即声明一个数据库对象 + char *zErrMsg = 0; // 用于存储错误信息 + int rc; // 用于存储函数返回值 rc = sqlite3_open( "../sql_base/green_house.db", - &db); // 打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 - if (rc) { + &db); // 打开指定的数据库文件,如果不存在将创建一个同名的数据库文件 + if (rc) + { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1; @@ -25,22 +27,24 @@ int main(int argc, char const* argv[]) { // 获取前端传递的 JSON 数据 char request_data[128] = ""; - fgets(request_data, 128, stdin); // 从标准输入中读取一行数据 + fgets(request_data, 128, stdin); // 从标准输入中读取一行数据 // 解析 JSON 数据 - cJSON* json_buf = cJSON_Parse(request_data); // 解析 JSON 数据 - if (json_buf == NULL) { + cJSON *json_buf = cJSON_Parse(request_data); // 解析 JSON 数据 + if (json_buf == NULL) + { fprintf(stderr, "Error parsing JSON data\n"); sqlite3_close(db); return 1; } // 获取用户名和密码 - cJSON* user = cJSON_GetObjectItemCaseSensitive(json_buf, "name"); - cJSON* password = cJSON_GetObjectItemCaseSensitive(json_buf, "password"); + cJSON *user = cJSON_GetObjectItemCaseSensitive(json_buf, "name"); + cJSON *password = cJSON_GetObjectItemCaseSensitive(json_buf, "password"); if (user == NULL || password == NULL || !cJSON_IsString(user) || - !cJSON_IsString(password)) { // 是否是非法输入 + !cJSON_IsString(password)) + { // 是否是非法输入 fprintf(stderr, "Error getting username and/or password from JSON data\n"); cJSON_Delete(json_buf); @@ -49,8 +53,8 @@ int main(int argc, char const* argv[]) { } // 拿到用户名和密码 - char* username_from_frontend = user->valuestring; - char* password_from_frontend = password->valuestring; + char *username_from_frontend = user->valuestring; + char *password_from_frontend = password->valuestring; printf("username is %s, pwd is %s\n", username_from_frontend, password_from_frontend); @@ -58,14 +62,16 @@ int main(int argc, char const* argv[]) { // 构建查询语句 char query_sql[128] = ""; sprintf(query_sql, - "select * from login_users where username='%s' and password='%s'", - username_from_frontend, password_from_frontend); // 构建查询语句 + "select * from login_users where username='%s' and password='%s';", + username_from_frontend, password_from_frontend); // 构建查询语句 + + printf("query_sql is %s\n", query_sql); // 执行查询语句 // rc = sqlite3_exec(db, query_sql, 0, 0, &zErrMsg); // 执行查询语句 - rc = sqlite3_exec(db, query_sql, sql_search_callback, 0, - &zErrMsg); // 执行查询语句 - if (rc != SQLITE_OK) { + rc = sqlite3_exec(db, query_sql, sql_search_callback, 0, &zErrMsg); // 执行查询语句 + if (rc != SQLITE_OK) + { fprintf(stderr, "SQL error: %s\n", zErrMsg); sqlite3_free(zErrMsg); cJSON_Delete(json_buf); @@ -74,14 +80,14 @@ int main(int argc, char const* argv[]) { } // 构建 JSON 数据 - cJSON* result_json = cJSON_CreateObject(); + cJSON *result_json = cJSON_CreateObject(); cJSON_AddItemToObject(result_json, "result", cJSON_CreateString("success")); cJSON_AddItemToObject(result_json, "username", cJSON_CreateString(username_from_frontend)); // 打印 JSON 数据 - char* result_json_str = cJSON_Print(result_json); - printf("%s\n", result_json_str); + char *result_json_str = cJSON_Print(result_json); + // printf("%s\n", result_json_str); // 释放资源 cJSON_Delete(json_buf); @@ -91,7 +97,16 @@ int main(int argc, char const* argv[]) { return 0; } -int sql_search_callback(void* NotUsed, +int sql_search_callback(void *NotUsed, int argc, - char** argv, - char** azColName) {} \ No newline at end of file + char **argv, + char **azColName) +{ + int i; + for (i = 0; i < argc; i++) + { + printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); + } + + return 0; +} \ No newline at end of file