您的位置:首页 > 产品设计 > UI/UE

Mysql_real_query报错表示不同步

2013-11-08 23:39 190 查看
Mysql_real_query报错表示不同步

这两天写内核的时候碰到一个问题,主要是原因藏得很隐蔽,让我好一顿找,于是mark一下.

在添加一个模块时调用了mysql_real_query函数,我勒个去一个劲地报错,代码前后检查不下5次,跟以前写的米啥两样啊,于是去google半天,错误原因是mysql_store_result()这个东西没清空,大概如此,但为虾米会没清空呢?我仔细检查过,在每个mysql_store_resule后面我都有用mysql_free_result的啊,调试加google得出的结论是,当调用一个存储过程或者SQL语句的时候,如果返回值是一个空记录集,尽管row数为零,但是mysql_store_result()的返回值并不为NULL!
也就是说继续执行下去了,但是这样子继续执行不知为何就是会出错?原因不得而知,苦搜半天未果T_T.

比如我原先是这么写的.

?[Copy to
clipboard]View Code CPP

1
2
3
4
5
6
7
8

if( res = mysql_store_result(&Mysql) )
{
while( row = mysql_fetch_row( res ) )
{
.....
}
mysql_free_result(res);
}

改成

?[Copy to
clipboard]View Code CPP

1
2
3
4
5
6
7
8

if((res = mysql_store_result(&Mysql)) && mysql_num_rows(res) > 0 )
{
while( row = mysql_fetch_row( res ) )
{
.....
}
mysql_free_result(res);
}

问题解决了 =,=..

而我在存储过程中判断如果为空记录集则返回NULL,也可行.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: