Skip to content

Instantly share code, notes, and snippets.

@tim-cotten
Created November 28, 2018 04:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tim-cotten/8d4cf0a5f0a8c2ae48aeb3c2846dc4ff to your computer and use it in GitHub Desktop.
Save tim-cotten/8d4cf0a5f0a8c2ae48aeb3c2846dc4ff to your computer and use it in GitHub Desktop.
Iterating over a MySQL result set in C with a single column (id)
do {
MYSQL_FIELD *fields;
MYSQL_BIND *rs_bind;
if (mysql_stmt_field_count(stmt) > 0) {
MYSQL_RES *rs_metadata = mysql_stmt_result_metadata(stmt);
fields = mysql_fetch_fields(rs_metadata);
rs_bind = (MYSQL_BIND *) malloc(sizeof (MYSQL_BIND));
memset(rs_bind, 0, sizeof (MYSQL_BIND));
rs_bind[0].buffer_type = fields[0].type;
rs_bind[0].is_null = &is_null;
rs_bind[0].buffer = (char *)&id;
rs_bind[0].buffer_length = sizeof(id);
status = mysql_stmt_bind_result(stmt, rs_bind);
while (1) {
status = mysql_stmt_fetch(stmt);
if (status == 1 || status == MYSQL_NO_DATA)
break;
}
mysql_free_result(rs_metadata);
free(rs_bind);
fields = NULL;
}
status = mysql_stmt_next_result(stmt);
} while (status == 0);
mysql_stmt_close(stmt);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment