Mysql_real_query报错表示不同步

本文介绍了在使用mysql_real_query函数时遇到的同步错误,并详细解释了如何通过正确处理空记录集来解决这一问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,也可行.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值