tooya 发表于 2009-12-19 12:30:47

请教论坛各高手,急

本帖最后由 tooya 于 2009-12-19 12:38 编辑

示例代码:

数据库表:name类型Varchar
            player_kill 类型int

new sql_kill
new names

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,31)
          result = dbi_query(dbc,"SELECT * FROM killcount WHERE name = '%s'",names)
          if(result == RESULT_NONE) //new user?
          {
                  result = dbi_query(dbc,"INSERT INTO killcount VALUES ('%s','0')",names)
                  dbi_free_result(result)
          }
}

public death_msg()
{
         new attacker = read_data(1)
         new sql_kill
         result = dbi_query(dbc,"SELECT * FROM killcount WHERE name = '%s'",names)
         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)
         dbi_free_result(result)
}
就是每杀一个人都会更新一下数据库 杀人+1
单机测试没有任何问题,放到服务器上就有问题了,大部分人能正确统计,但是有小部分人的数据很异常。
以上仅仅是一个示例。

如图:


zombie_infect列是僵尸感染人类数,居然能达到上亿、几千万?
而有些人统计很正常,我是不是用错方法了还是?
百思不得其解啊,还是请高手出山帮忙,我个人就怀疑是dbi_result或字符串的问题
因为是小部分人出现这些问题的,所以很难找到什么原因所在,主要是自己测试的时候它却没任何问题..

高手们大显身手帮帮忙吧!

20576526 发表于 2009-12-19 20:10:55

楼上的QQ多少?我的20576526

tooya 发表于 2009-12-21 02:07:24

弄明白了
要用new abc = dbi_result(index,"XXX")

Rulzy 发表于 2009-12-24 00:44:53

直接用
UPDATE killcount SET player_kill=player_kill+1 WHERE name = '%s'
就可以了

LittleKu 发表于 2009-12-24 09:53:38

楼主为什么不试试用<sqlx>呢?
页: [1]
查看完整版本: 请教论坛各高手,急