出现这种问题,我这里遇到的原因是因为上一次查询的结果集没有释放完全,导致查询失败
此时的错误内容是:Commands out of sync; you can't run this command now
该错误内容由mysql_error(conn)语句输出。
如果你在上次查询时忘了调用mysql_free_result();
那就回去加一行就可以了。
如果还是不好使,请继续往下看。
很有可能你是在上次查询中调用了多条SELECT语句或调用了存储过程。在这种情况下,需要对mysql_real_connect()中的参数进行修改。
一般情况下,我们最后一个参数写的是0,但是如果你调用了存储过程,即返回集可能不只有一个,就需要将最后一个参数变成CLIENT_MULTI_STATEMENTS。
假如你还是不好使,那么你需要在原先释放结果集的地方,将原来的代码替换成
while (!mysql_next_result(conn))
{
res=mysql_store_result(conn);
mysql_free_result(res);
}
其中conn是连接句柄,res是结果集
下面给上我的全部代码,该代码仅供参考,我将我的主机名删去了。