MYSQL的C API之mysql_query

来源:互联网 发布:seo一专员 编辑:程序博客网 时间:2024/06/06 14:19

在mysql的C API中,mysql_query是一个执行的SQL语句的函数,不管是select还是update,alter,insert语句,都用这个函数。


今天碰见个很奇怪的问题,开始一直没想明白。问题如下:

我的mysql_query()在执行SQL的时候,不管SQL实际是否能在数据中查询到数据,结果集都不会是空。这个时候我的需求大概就是像

登录那样,查询账号。但是它无论如何都返回数据,这让我一直想不明白,找不到原因。

后来终于找到原因。SQL如下:

select count(1) from drug where id = 1
在这我用的count(1),用这个,在执行之后,它就会返回一个数字,结果集的数量,本来count(1)是用来优化查询的,到这反而误导我了。

用这个语句在数据库下直接查询,会发现有一列出现,列下面是count(1)的值。
这种情况下的解决办法:
获取记录的第一个值就可以了


BUG的真实原因:

select * from drug where nowname = '毒药1'

select 后面用*就会返回完整的结果集了,如果SQL确实在数据库中查询不到,就会一个空的结果集