#include "longzoro/version.h" #ifdef _SASQL//新添加 #include "longzoro/sasql.h" #include "char_base.h" #include "configfile.h" #include #include #include MYSQL mysql; MYSQL_RES *mysql_result; MYSQL_ROW mysql_row; MYSQL_FIELD *fields; typedef struct tagSQLConfig { char sql_IP[32]; int sql_Port; char sql_Port1[16]; char sql_ID[16]; char sql_PS[32]; char sql_DataBase[16]; char sql_Table[16]; char sql_LOCK[16]; char sql_NAME[16]; char sql_PASS[16]; }SQLConfig; SQLConfig sqlconfig; int AutoReg; int openbackground; static int readSqlConfig( char *path ) { char buf[255]; FILE *fp; fp = fopen( path , "r" ); if( fp == NULL ){ return -2; } while( fgets( buf , sizeof( buf ) , fp )){ char command[255]; char param[255]; chop(buf); easyGetTokenFromString( buf , 1 , command , sizeof( command )); easyGetTokenFromString( buf , 2 , param , sizeof( param )); if( strcmp( command , "sql_IP" ) == 0 ){ strcmp( sqlconfig.sql_IP , param ) ; snprintf( sqlconfig.sql_IP , sizeof( sqlconfig.sql_IP) , param ); printf("数据库地址: %s\n",sqlconfig.sql_IP); } else if( strcmp( command , "sql_Port" ) == 0 ){ sqlconfig.sql_Port = atoi( param ); snprintf( sqlconfig.sql_Port1 , sizeof( sqlconfig.sql_Port1) , param ); printf("数据库端口: %d\n",sqlconfig.sql_Port); } else if( strcmp( command , "sql_ID" ) == 0 ){ strcmp( sqlconfig.sql_ID , param ) ; snprintf( sqlconfig.sql_ID , sizeof( sqlconfig.sql_ID) , param ); printf("数据库用户: %s\n",sqlconfig.sql_ID); } else if( strcmp( command , "sql_PS" ) == 0 ){ strcmp( sqlconfig.sql_PS , param ) ; snprintf( sqlconfig.sql_PS , sizeof( sqlconfig.sql_PS) , param ); printf("数据库密码: %s\n",sqlconfig.sql_PS); } else if( strcmp( command , "sql_DataBase" ) == 0 ){ strcmp( sqlconfig.sql_DataBase , param ) ; snprintf( sqlconfig.sql_DataBase , sizeof( sqlconfig.sql_DataBase) , param ); printf("登陆数据库名:%s\n",sqlconfig.sql_DataBase); } else if( strcmp( command , "sql_Table" ) == 0 ){ strcmp( sqlconfig.sql_Table , param ) ; snprintf( sqlconfig.sql_Table , sizeof( sqlconfig.sql_Table) , param ); printf("用户信息表名: %s\n",sqlconfig.sql_Table); } else if( strcmp( command , "sql_NAME" ) == 0 ){ strcmp( sqlconfig.sql_NAME , param ) ; snprintf( sqlconfig.sql_NAME , sizeof( sqlconfig.sql_NAME) , param ); printf("账号字段名称: %s\n",sqlconfig.sql_NAME); } else if( strcmp( command , "sql_PASS" ) == 0 ){ strcmp( sqlconfig.sql_PASS , param ) ; snprintf( sqlconfig.sql_PASS , sizeof( sqlconfig.sql_PASS) , param ); printf("密码字段名称: %s\n",sqlconfig.sql_PASS); } } fclose(fp); return 0; } BOOL sasql_init( void ) { if((mysql_init(&mysql) == NULL) & readSqlConfig("sql.cf")) { printf("\n数据库初始化失败!\n"); exit(1); return FALSE; } if( !mysql_real_connect( &mysql, sqlconfig.sql_IP, sqlconfig.sql_ID,//帐号 sqlconfig.sql_PS,//密码 sqlconfig.sql_DataBase,//选择的资料库 sqlconfig.sql_Port, NULL, 0 ) ) { printf("\n数据库连接失败!\n"); return FALSE; } mysql_query(&mysql,"set names 'gbk'"); printf("\n数据库连接成功!\n"); return TRUE; } int sasql_mysql_query( char *sqlstr ) { mysql_query(&mysql,"set names 'gbk'"); return mysql_query(&mysql,sqlstr); } void sasql_close( void ) { mysql_close( &mysql ); } BOOL sasql_ckeckStrint( char *str ) { int i; for(i=0;i 'z') && (str[i] < 'A' || str[i] > 'Z') && (str[i] < '0' || str[i] > '9') && (str[i] != '.')){ return FALSE; } } return TRUE; } int sasql_getVipPoint( int charaindex ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"select VipPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if (mysql_row!=NULL) { return atoi(mysql_row[0]); }else{ return 0; } } } printf("\n数据库查找失败!\n"); printf("重新连接数据库..."); sasql_close(); sasql_init(); printf("完成\n"); return -1; } int sasql_setVipPoint( int charaindex, int point ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"update %s set VipPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ //printf("用户%s当前重回币%d!\n",id,point); return point; } return -1; } int sasql_getVipPointForCdkey( char *id ) { if(sasql_ckeckStrint(id) == FALSE){ printf("异常字符的用户名%s\n",id); return -1; } char sqlstr[256]; sprintf(sqlstr,"select VipPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if (mysql_row!=NULL) { return atoi(mysql_row[0]); }else{ return 0; } } } printf("\n数据库查找失败!\n"); printf("重新连接数据库..."); sasql_close(); sasql_init(); printf("完成\n"); return -1; } int sasql_setVipPointForCdkey( char *id, int point ) { if(sasql_ckeckStrint(id) == FALSE){ printf("异常字符的用户名%s\n",id); return -1; } char sqlstr[256]; sprintf(sqlstr,"update %s set VipPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ //printf("用户%s当前重回币%d!\n",id,point); return point; } return -1; } int sasql_getPayPoint( int charaindex ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"select PayPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if (mysql_row!=NULL) { return atoi(mysql_row[0]); }else{ return 0; } } } printf("\n数据库查找失败!\n"); printf("重新连接数据库..."); sasql_close(); sasql_init(); printf("完成\n"); return -1; } int sasql_setPayPoint( int charaindex, int point ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"update %s set PayPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ //printf("用户%s当前重回币%d!\n",id,point); return point; } return -1; } #ifdef _GAMBLE_POINT int sasql_getGamblePoint( int charaindex ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"select GamblePoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if (mysql_row!=NULL) { return atoi(mysql_row[0]); }else{ return 0; } } } printf("\n数据库查找失败!\n"); printf("重新连接数据库..."); sasql_close(); sasql_init(); printf("完成\n"); return -1; } int sasql_setGamblePoint( int charaindex, int point ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"update %s set GamblePoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ return point; } return -1; } #endif #ifdef _TRIAL_POINT int sasql_getTrialPoint( int charaindex ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"select TrialPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if (mysql_row!=NULL) { return atoi(mysql_row[0]); }else{ return 0; } } } printf("\n数据库查找失败!\n"); printf("重新连接数据库..."); sasql_close(); sasql_init(); printf("完成\n"); return -1; } int sasql_setTrialPoint( int charaindex, int point ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"update %s set TrialPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ return point; } return -1; } #endif #ifdef _GLORY_POINT int sasql_getGloryPoint( int charaindex ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"select GloryPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if (mysql_row!=NULL) { return atoi(mysql_row[0]); }else{ return 0; } } } printf("\n数据库查找失败!\n"); printf("重新连接数据库..."); sasql_close(); sasql_init(); printf("完成\n"); return -1; } int sasql_setGloryPoint( int charaindex, int point ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"update %s set GloryPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ return point; } return -1; } #endif int sasql_getPayPointForCdkey( char *id ) { if(sasql_ckeckStrint(id) == FALSE){ printf("异常字符的用户名%s\n",id); return -1; } char sqlstr[256]; sprintf(sqlstr,"select PayPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if (mysql_row!=NULL) { return atoi(mysql_row[0]); }else{ return 0; } } } printf("\n数据库查找失败!\n"); printf("重新连接数据库..."); sasql_close(); sasql_init(); printf("完成\n"); return -1; } int sasql_setPayPointForCdkey( char *id, int point ) { if(sasql_ckeckStrint(id) == FALSE){ printf("异常字符的用户名%s\n",id); return -1; } char sqlstr[256]; sprintf(sqlstr,"update %s set PayPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ //printf("用户%s当前重回币%d!\n",id,point); return point; } return -1; } #ifdef _PAUCTION_MAN BOOL sasql_addPauctionInfo( char *cdkey, char *name, char *effect, int cost, int type, char *info, char *string ) { char sqlstr[1024]; sprintf(sqlstr,"INSERT INTO `PauctionInfo` ( `cdkey` , `name` , `effect` , `cost` , `type` , `info` , `string` , `day` ) " "VALUES ( '%s', '%s', '%s', %d, %d, '%s', '%s', NOW())", cdkey, name, effect, cost, type, info, string ); if(!sasql_mysql_query(sqlstr)){ printf("成功添加一条拍卖信息!\n"); return TRUE; } return FALSE; } int sasql_getPauctionList( char *List, int start, int type, char *cdkey ) { char sqlstr[1024]; char tmp[256]; char buf[256]; int num_row=0; if(type == 0){ if(strlen(cdkey)>0){ sprintf(sqlstr, "select `id` , `cdkey` , `effect` from `PauctionInfo` where `cdkey` = BINARY'%s'", cdkey); }else{ sprintf(sqlstr, "select `id` , `cdkey` , `effect` from `PauctionInfo` where TO_DAYS( NOW( ) ) - TO_DAYS( day ) < 30"); } }else{ sprintf(sqlstr, "select `id` , `cdkey` , `effect` from `PauctionInfo` where `type` = %d AND TO_DAYS( NOW( ) ) - TO_DAYS( day ) < 30", type); } if(!sasql_mysql_query(sqlstr)){ int line = 0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row > 0){ while((mysql_row = mysql_fetch_row(mysql_result))){ if(line >=start){ sprintf(tmp, "%s|%s|%s", mysql_row[0], mysql_row[1], mysql_row[2]); strcat(List, makeEscapeString(tmp, buf, sizeof( buf))); strcat(List, "|"); if(line > start + 10)break; } line ++; } } return num_row; } return 0; } BOOL sasql_getPauctionSurvey( char *token, int id ) { char sqlstr[1024]; char buf[1024]; sprintf(sqlstr, "select `id` , `name` , `effect`, `cost`, `type`, `info` from `PauctionInfo` where `id` = %d AND TO_DAYS( NOW( ) ) - TO_DAYS( day ) < 30", id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row > 0){ mysql_row = mysql_fetch_row(mysql_result); sprintf(token, "%s|%s|%s|%s|%s|%s", mysql_row[0], mysql_row[1], mysql_row[2],mysql_row[3], mysql_row[4], makeEscapeString(mysql_row[5], buf, sizeof( buf) )); } return TRUE; } return FALSE; } int sasql_getMyPauction( char *token, int id, char *cdkey ) { char sqlstr[1024]; if(strlen(cdkey)>0){ sprintf(sqlstr, "select `string` ,`type` from `PauctionInfo` where `id` = %d AND `cdkey` = BINARY'%s'", id, cdkey); }else{ sprintf(sqlstr, "select `string` ,`type` from `PauctionInfo` where `id` = %d ", id); } if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row > 0){ mysql_row = mysql_fetch_row(mysql_result); sprintf(token, "%s", mysql_row[0]); } return atoi(mysql_row[1]); } return -1; } int sasql_PauctionOK( int id, char *cdkey ) { char sqlstr[1024]; sprintf(sqlstr, "select `cdkey`, `cost` from `PauctionInfo` where `id` = %d", id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row > 0){ mysql_row = mysql_fetch_row(mysql_result); char tocdkey[64]; sprintf(tocdkey, "%s", mysql_row[0]); int cost = atoi(mysql_row[1]); sprintf(sqlstr, "select * from `%s` where %s = BINARY'%s' AND VipPoint>%d", sqlconfig.sql_Table, sqlconfig.sql_NAME, cdkey, cost); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row > 0){ sprintf(sqlstr,"update %s set VipPoint=VipPoint + %d where %s=BINARY'%s' " , sqlconfig.sql_Table, cost, sqlconfig.sql_NAME, tocdkey); if(!sasql_mysql_query(sqlstr)){ sprintf(sqlstr,"update %s set VipPoint=VipPoint - %d where %s=BINARY'%s' " , sqlconfig.sql_Table, cost, sqlconfig.sql_NAME, cdkey); if(!sasql_mysql_query(sqlstr)){ return 1; } } }else{ return -2; } } }else{ return -1; } } return 0; } BOOL sasql_delPauctionBuy( int id, char *cdkey ) { char sqlstr[1024]; if(strlen(cdkey)>0){ sprintf(sqlstr, "delete from `PauctionInfo` where `id` = %d AND `cdkey` = BINARY'%s'", id, cdkey); }else{ sprintf(sqlstr, "delete from `PauctionInfo` where `id` = %d", id); } if(!sasql_mysql_query(sqlstr)){ return TRUE; } return FALSE; } #endif #ifdef _JZ_NEWSCRIPT_LUA int sasql_vippoint( char *ID, int point, int flag ) { char sqlstr[256]; // print("\NVIPpoint1=%d\n",point); if(strstr(ID,"'")!=NULL) return -1; sprintf(sqlstr,"select `VipPoint` from `%s` where `%s`=BINARY'%s'",sqlconfig.sql_Table,sqlconfig.sql_NAME,ID); // printf("22222222:%s\n",sqlstr); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if(flag==0){ return atoi(mysql_row[0]); } if(flag==520){ sprintf(sqlstr,"update `%s` set `VipPoint`=%d where `%s`=BINARY'%s'", sqlconfig.sql_Table, point,sqlconfig.sql_NAME, ID); }else{ point+=atoi(mysql_row[0]); sprintf(sqlstr,"update `%s` set `VipPoint`=%d where `%s`=BINARY'%s'", sqlconfig.sql_Table, point,sqlconfig.sql_NAME, ID); } if(!mysql_query(&mysql,sqlstr)){ return point; }else{ return atoi(mysql_row[0]); } }else{ //mysql_free_result(mysql_result); } } printf("更新金币数失败!-- %s\n",sqlstr); return -1; } int sasql_ampoint( char *ID, int point, int flag ) { char sqlstr[256]; mj_sprintf(sqlstr,"select `AmPoint` from `%s` where `%s`=BINARY'%s'",sqlconfig.sql_Table,sqlconfig.sql_NAME,ID); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if(flag==0){ return atoi(mysql_row[0]); } point+=atoi(mysql_row[0]); mj_sprintf(sqlstr,"update `%s` set `AmPoint`=%d where `%s`=BINARY'%s'", sqlconfig.sql_Table, point,sqlconfig.sql_NAME, ID); if(!mysql_query(&mysql,sqlstr)){ return point; }else{ return atoi(mysql_row[0]); } }else{ // mysql_free_result(mysql_result); } } print("更新%s积分失败!\n",ID); return -1; } int sasql_rmbpoint( char *ID, int point, int flag ) { char sqlstr[256]; mj_sprintf(sqlstr,"select `RMBPOINT` from `%s` where `%s`=BINARY'%s'",sqlconfig.sql_Table,sqlconfig.sql_NAME,ID); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if(flag==0){ return atoi(mysql_row[0]); } point+=atoi(mysql_row[0]); mj_sprintf(sqlstr,"update `%s` set `RMBPOINT`=%d where `%s`=BINARY'%s'", sqlconfig.sql_Table, point,sqlconfig.sql_NAME, ID); if(!mysql_query(&mysql,sqlstr)){ return point; }else{ return atoi(mysql_row[0]); } }else{ // mysql_free_result(mysql_result); } } print("更新%sRMB失败!\n",ID); return -1; } #endif #ifdef _MO_LNS_MYSQLSUOXU struct youx{ int result; int flg; int errnono; char* errstr; int fieldCount; int rowCount; int rowAt; }retlua; void sasql_LUASQLAdv(char* sqlstr,char* filepath,char* function,int npcindex ,int charaindex,char* msg,int flg) { char* data = sasql_LuaAdv_QueryR(sqlstr,flg); NPC_Lua_SQLPushAdvCallBack(retlua.result,retlua.flg,retlua.errnono,retlua.errstr,retlua.fieldCount ,retlua.rowCount ,retlua.rowAt, data,filepath,function,npcindex,charaindex,msg ); } char* sasql_LuaAdv_QueryR(char *sqlstr,int flg) { int rowAtt = 0; static char buff[1024] = ""; snprintf(buff,1024, ""); buff[1023]='\0'; /*初始化信息表*/ retlua.result = 0;//结果集ERROR retlua.flg = flg;//分类 retlua.errnono = 0;//MYSQL错误编号 retlua.errstr = "";//MYSQL错误信息 retlua.fieldCount = 0;//查询的项目数 retlua.rowCount = 0;//查询结果集行数 retlua.rowAt = 0;//当前记录行数 if (flg == 1 || flg == 2){ if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result);//结果集行数 if (mysql_result == NULL) { retlua.result = -2; }else if (mysql_eof(mysql_result)) { retlua.result = -3; } if(num_row>0){ mysql_row = mysql_fetch_row(mysql_result);//从查询结果中取一条 retlua.errnono = mysql_errno(&mysql);//错误编号 retlua.errstr = mysql_error(&mysql);//错误信息 retlua.fieldCount = mysql_field_count(&mysql);//列数 retlua.rowCount = num_row;//结果行数量 rowAtt++; retlua.rowAt = rowAtt;//当前行数 if (flg == 1){ mysql_free_result(mysql_result);//释放结果集 mysql_result = NULL; rowAtt = 0; } int i; for (i=0;i 15) retlua.result = -1; return buff; }else { retlua.errnono = mysql_errno(&mysql); retlua.errstr = mysql_error(&mysql); } } }else if (flg == 3){ int num_row=0; if (mysql_result == NULL) { retlua.result = -2; return "结果集已经释放。"; } num_row=mysql_num_rows(mysql_result);//结果集行数 if (mysql_eof(mysql_result)) { retlua.result = -3;//已达到尾端,先给你提个醒,如果还继续查询,下面将会自动释放。 } if (num_row == rowAtt) { mysql_free_result(mysql_result);//释放结果集 mysql_result = NULL; rowAtt = 0; retlua.result = -3; return "已到达尾行,自动释放结果集。"; } if(num_row>0){ mysql_row = mysql_fetch_row(mysql_result);//从查询结果中取一条 retlua.errnono = mysql_errno(&mysql);//错误编号 retlua.errstr = mysql_error(&mysql);//错误信息 rowAtt++; retlua.rowAt = rowAtt;//当前行数 retlua.fieldCount = mysql_field_count(&mysql);//列数 retlua.rowCount = num_row;//结果行数量 if (num_row > 15) retlua.result = -1; int i; for (i=0;i0){ mysql_row = mysql_fetch_row(mysql_result); return (char*)mysql_row[row]; } }else return "SQL Query ERROR"; } #endif #endif int sasql_check_iponline( char *IP ) { char sqlstr[256]; sprintf(sqlstr,"select * from `%s` where `IP`='%s'",sqlconfig.sql_Table,IP); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ return 1; }else{ return 0; } } return -1; } int sasql_query_online_ip(char *IP){ char sqlstr[256]; sprintf(sqlstr,"select * from `OnlineIP` where `IP`='%s'",IP); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ return 1; }else{ return 0; } } return -1; } int sasql_query(char *nm, char *pas){ char sqlstr[256]; sprintf(sqlstr,"select `%s`,`Password`,`SafePasswd`,`Lock` from `%s` where `%s`=BINARY'%s'",sqlconfig.sql_NAME,sqlconfig.sql_Table,sqlconfig.sql_NAME,nm); //print(sqlstr); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if(mysql_row[2]!=NULL){ if((strcmp(pas,mysql_row[1]) == 0) && (atoi(mysql_row[3])==0 || atoi(mysql_row[3])==getLockType())){ return 1; }else{ //printf("用户%s密码错误!\n",nm); return 2; } }else { if(strcmp(pas,mysql_row[1]) == 0 && atoi(mysql_row[3])==0){ return 1; }else{ //printf("用户%s密码错误!\n",nm); return 2; } } }else{ //printf("用户%s未注册!\n",nm); return 3; } }else{ //printf("\n数据库查找失败!\n"); return 0; } } #ifdef _MO_LOGIN_NO_KICK BOOL sasql_CheckPasswd( char *id, char *passwd ) { if(sasql_ckeckStrint(id) == FALSE){ printf("异常字符%s\n",id); return FALSE; } if(sasql_ckeckStrint(passwd) == FALSE){ printf("异常字符%s\n",passwd); return FALSE; } char sqlstr[256]; sprintf(sqlstr,"select `PassWord` from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!sasql_mysql_query(sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); if( mysql_row[0] != NULL && strlen(mysql_row[0])>0){ if(strcmp(passwd, mysql_row[0])==0){ return TRUE; }else{ return FALSE; } }else{ return FALSE; } } } return FALSE; } #endif #ifdef _NEW_SQL_MONEY int sasql_setSQLPoint( int charaindex, int point ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"update %s set SQLPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!mysql_query(&mysql,sqlstr)){ return point; } return -1; } int sasql_getSQLPoint( int charaindex ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"select SQLPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); // mysql_free_result(mysql_result); return atoi(mysql_row[0]); } } printf("\n数据库查找失败[20]!\n"); printf("重新连接数据库[3]..."); // sasql_close(); // sasql_init(); printf("完成\n"); return -1; } int sasql_setGoldPoint( int charaindex, int point ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"update %s set GoldPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, id); if(!mysql_query(&mysql,sqlstr)){ return point; } return -1; } int sasql_getGoldPoint( int charaindex ) { char sqlstr[256]; char *id = CHAR_getChar(charaindex, CHAR_CDKEY); sprintf(sqlstr,"select GoldPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, id); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); // mysql_free_result(mysql_result); return atoi(mysql_row[0]); } } printf("\n数据库查找失败[21]!\n"); printf("重新连接数据库[3]..."); // sasql_close(); // sasql_init(); printf("完成\n"); return -1; } int sasql_setSQLPointByCdkey( char* cdkey, int point ) { char sqlstr[256]; sprintf(sqlstr,"update %s set SQLPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, cdkey); if(!mysql_query(&mysql,sqlstr)){ return point; } return -1; } int sasql_getSQLPointByCdkey( char* cdkey ) { char sqlstr[256]; sprintf(sqlstr,"select SQLPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, cdkey); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); // mysql_free_result(mysql_result); return atoi(mysql_row[0]); } } printf("\n数据库查找失败[22]!\n"); printf("重新连接数据库[3]..."); // sasql_close(); // sasql_init(); printf("完成\n"); return -1; } int sasql_setGoldPointByCdkey( char* cdkey, int point ) { char sqlstr[256]; sprintf(sqlstr,"update %s set GoldPoint=%d where %s=BINARY'%s'", sqlconfig.sql_Table, point, sqlconfig.sql_NAME, cdkey); if(!mysql_query(&mysql,sqlstr)){ return point; } return -1; } int sasql_getGoldPointByCdkey( char* cdkey ) { char sqlstr[256]; sprintf(sqlstr,"select GoldPoint from `%s` where %s=BINARY'%s'", sqlconfig.sql_Table, sqlconfig.sql_NAME, cdkey); if(!mysql_query(&mysql,sqlstr)){ int num_row=0; mysql_free_result(mysql_result); mysql_result=mysql_store_result(&mysql); num_row=mysql_num_rows(mysql_result); if(num_row>0){ mysql_row=mysql_fetch_row(mysql_result); // mysql_free_result(mysql_result); return atoi(mysql_row[0]); } } printf("\n数据库查找失败[23]!\n"); printf("重新连接数据库[3]..."); // sasql_close(); // sasql_init(); printf("完成\n"); return -1; } #endif