1. 程式人生 > >MYSQL的C API之mysql_query

MYSQL的C API之mysql_query

在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確實在資料庫中查詢不到,就會一個空的結果集