|
发表于 2009-12-19 12:30:47
|
显示全部楼层
|阅读模式
来自 中国–广东–深圳
本帖最后由 tooya 于 2009-12-19 12:38 编辑
示例代码:
数据库表:name 类型Varchar
player_kill 类型int-
- new sql_kill[33][12]
- new names[33][1][33]
- public plugin_init()
- set_task(1.0,"sqlinit")
- public sqlinit(id)
- {
- dbi_connect(.........)
- }
- public client_putinserver(id)
- set_task(2.0,"get_sql_info",id)
- public get_sql_info(id)
- {
- get_user_name(id,names[id][0],31)
- result = dbi_query(dbc,"SELECT * FROM killcount WHERE name = '%s'",names[id][0])
- if(result == RESULT_NONE) //new user?
- {
- result = dbi_query(dbc,"INSERT INTO killcount VALUES ('%s','0')",names[id][0])
- dbi_free_result(result)
- }
- }
- public death_msg()
- {
- new attacker = read_data(1)
- new sql_kill[12]
- result = dbi_query(dbc,"SELECT * FROM killcount WHERE name = '%s'",names[attacker][0])
- dbi_result(result,"player_kill",sql_kill,11)
- new sq_kll = str_to_num(sql_kill) + 1
- result = dbi_query(dbc,"UPDATE killcount SET player_kill = '%d' WHERE name = '%s'",sq_kll,names[attacker][0])
- dbi_free_result(result)
- }
复制代码 就是每杀一个人都会更新一下数据库 杀人+1
单机测试没有任何问题,放到服务器上就有问题了,大部分人能正确统计,但是有小部分人的数据很异常。
以上仅仅是一个示例。
如图:
zombie_infect列是僵尸感染人类数,居然能达到上亿、几千万?
而有些人统计很正常,我是不是用错方法了还是?
百思不得其解啊,还是请高手出山帮忙,我个人就怀疑是dbi_result或字符串的问题
因为是小部分人出现这些问题的,所以很难找到什么原因所在,主要是自己测试的时候它却没任何问题..
高手们大显身手帮帮忙吧! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注个册吧
×
|