stoneage8.5/石器时代服务器端最新完整源代码/Serv/gmsv/longzoro/sasql_linux.c
anson1788 a5b185b7ef Revert "re upload"
This reverts commit 274b7d169c.
2020-06-23 15:23:51 +08:00

1143 lines
29 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "longzoro/version.h"
#ifdef _SASQL//新添加
#include "longzoro/sasql.h"
#include "char_base.h"
#include "configfile.h"
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
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<strlen(str);i++){
if((str[i] < 'a' || str[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<retlua.fieldCount;i++)
{
snprintf(buff,sizeof(buff), "%s%s;",buff,(char*)mysql_row[i]);
}
if (num_row > 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;i<retlua.fieldCount;i++)
{
snprintf(buff,sizeof(buff), "%s%s;",buff,(char*)mysql_row[i]);
}
return buff;
}else {
retlua.errnono = mysql_errno(&mysql);
retlua.errstr = mysql_error(&mysql);
}
}else if (flg == 4){
if (mysql_result == NULL) {
retlua.result = -2;
return "结果集已经释放。";
}
mysql_free_result(mysql_result);//释放结果集
mysql_result = NULL;
rowAtt = 0;
retlua.rowAt = rowAtt;//当前行数
retlua.errnono = mysql_errno(&mysql);
retlua.errstr = mysql_error(&mysql);
return "";
}
retlua.errnono = mysql_errno(&mysql);
retlua.errstr = mysql_error(&mysql);
return "";
}
void sasql_LUASQL(char* sqlstr,int row,char* filepath,char* function,int npcindex ,int charaindex,char* msg)
{
if(row == -1 )
{
mysql_query(&mysql,sqlstr);
}else{
NPC_Lua_SQLPushCallBack(sasql_Lua_QueryR(row,sqlstr),filepath,function,npcindex, charaindex,msg);
}
}
char* sasql_Lua_QueryR(int row,char *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);
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