Fetching rows in a MySQL database table using MySQL C API and C++

api, c, c++, mysql

Solution

In the MySQL C API, mysql_fetch_row returns a MYSQL_ROW object, which is essentially an array of values in the current row.

So, your code should be something like:

mysql_query(sqlhnd, "SELECT * FROM `my_table`");
MYSQL_RES *confres = mysql_store_result(sqlhnd);
int totalrows = mysql_num_rows(confres);
int numfields = mysql_num_fields(confres);
MYSQL_FIELD *mfield;

while((row = mysql_fetch_row(confres)))
{
    for(i = 0; i < numfields; i++)
    {
        char *val = row[i];
        // do something with val...
    }
}

Better yet, don't do a "SELECT * FROM `mytable`" in a program. It would be much better to name the fields you expect, so that you can be sure of the order of the fields returned.

Problem

I'm confused when trying to fetch table rows in mysql using C++ with MySQL C API. I can do it easily in PHP, just because C++ is a strongly-typed language so that we also need to take care of the dirty process.. This is how I done it in PHP ``` $data = array(); $i = 0; $query = mysql_query("SELECT * FROM `my_table`"); while($fetch = mysql_fetch_array($query)) { $data[$i] = $fetch['columntobefetched']; $i++; } ``` But how to do the same in C++ with MySQL API? Here's my code so far....with a confusing dead end...x__x ``` MYSQL *sqlhnd = mysql_init(NULL); mysql_real_connect(sqlhnd, "server", "user", "pass", "database", port, NULL, 0); mysql_query(sqlhnd, "SELECT * FROM `my_table`"); MYSQL_RES *confres = mysql_store_result(sqlhnd); int totalrows = mysql_num_rows(confres); int numfields = mysql_num_fields(confres); MYSQL_FIELD *mfield; while((row = mysql_fetch_row(confres))) { for(i = 0; i < numfields; i++) { while(mfield = mysql_fetch_field(confres)) { mfield->//??? I'm dead } } } ``` Basically I wanted to get a value from a field in the database table and store it to a variable.. Any kind of help would be appreciated :) Thanks

Original source