MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;
if (mysql_query(&mysql,query_string))
{
// error
}
else // query succeeded, process any data returned by it
{
result = mysql_store_result(&mysql);
if (result) // there are rows
{
num_fields = mysql_num_fields(result);
// retrieve rows, then call mysql_free_result(result)
}
else // mysql_store_result() returned nothing; should it have?
{
if(mysql_field_count(&mysql) == 0)
{
// query does not return data
// (it was not a SELECT)
num_rows = mysql_affected_rows(&mysql);
}
else // mysql_store_result() should have returned data
{
fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
}
}
}
1条答案
按热度按时间bihw5rsg1#
来自开发者mysql c-api-function-overview
在每个mysql\u query()或mysql\u real\u query()之后。如果结果集调用成功,则该语句是select语句,您可以读取行。如果结果集调用失败,请调用mysql\u field\u count(),以确定结果是否符合预期。如果mysql\u field\u count()返回零,则该语句不返回任何数据(表示它是insert、update、delete等),并且不应返回行。如果mysql\u field\u count()为非零,则该语句应该返回行,但没有返回。这表示该语句是一个失败的select语句。请参阅mysql\u field\u count()的说明,以获取如何完成此操作的示例。
你可以用
检查最近查询的结果并采取相应的操作。
developper.mysql中的示例