请教论坛各高手,急
本帖最后由 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或字符串的问题
因为是小部分人出现这些问题的,所以很难找到什么原因所在,主要是自己测试的时候它却没任何问题..
高手们大显身手帮帮忙吧! 楼上的QQ多少?我的20576526 弄明白了
要用new abc = dbi_result(index,"XXX") 直接用
UPDATE killcount SET player_kill=player_kill+1 WHERE name = '%s'
就可以了 楼主为什么不试试用<sqlx>呢?
页:
[1]