Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <mysql.h>
- main() {
- MYSQL *conn;
- MYSQL_RES *res, *meta_res;
- MYSQL_ROW row;
- // this is for binding
- MYSQL_STMT *stmt;
- // number of value to be bound
- int numvalues = 1;
- MYSQL_BIND bind[numvalues];
- char *server = "localhost";
- char *user = "root";
- char *password = "hardc0d3d";
- char *database = "database";
- // prio is bound input variable in SELECT
- int prio;
- int param_count;
- // init db connection
- conn = mysql_init(NULL);
- if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
- fprintf(stderr, "%s\n", mysql_error(conn));
- exit(0);
- }
- stmt = mysql_stmt_init(conn);
- if (!stmt) {
- fprintf(stderr, " mysql_stmt_init(), out of memory\n");
- exit(0);
- }
- char *query = "SELECT id, foo, bar FROM table WHERE result=(?)";
- // prepare query
- if (mysql_stmt_prepare(stmt, query, strlen(query))) {
- fprintf(stderr, " mysql_stmt_prepare() failed\n");
- fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
- exit(0);
- }
- printf("prepare successful\n");
- // Get the parameter count from the statement
- param_count= mysql_stmt_param_count(stmt);
- printf("total parameters in query: %d\n", param_count);
- if (param_count != numvalues) {
- fprintf(stderr, " invalid parameter count returned by MySQL\n");
- exit(0);
- }
- // bind the INPUT data
- memset(bind, 0, sizeof(bind));
- /* INTEGER PARAM */
- /* This is a number type, so there is no need to specify buffer_length */
- bind[0].buffer_type= MYSQL_TYPE_LONG;
- bind[0].buffer= (char *)&prio;
- bind[0].is_null= 0;
- bind[0].length= 0;
- /* STRING PARAM */
- /*
- bind[1].buffer_type= MYSQL_TYPE_STRING;
- bind[1].buffer= (char *)str_data;
- bind[1].buffer_length= STRING_SIZE;
- bind[1].is_null= 0;
- bind[1].length= &str_length; */
- /* SMALLINT PARAM */
- /*
- bind[2].buffer_type= MYSQL_TYPE_SHORT;
- bind[2].buffer= (char *)&small_data;
- bind[2].is_null= &is_null;
- bind[2].length= 0; */
- // bind the buffers
- if (mysql_stmt_bind_param(stmt, bind)) {
- fprintf(stderr, " mysql_stmt_bind_param() failed\n");
- fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
- exit(0);
- }
- // Specify the data values for the query
- prio = 1; /* integer */
- // execute
- if (mysql_stmt_execute(stmt)) {
- fprintf(stderr, " mysql_stmt_execute(), 1 failed\n");
- fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
- exit(0);
- }
- //res = mysql_stmt_store_result(stmt);
- res = mysql_use_result(conn);
- // fetch result set metadata
- meta_res = mysql_stmt_result_metadata(stmt);
- if (!meta_res) {
- fprintf(stderr,
- " mysql_stmt_result_metadata(), \
- returned no meta information\n");
- fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
- exit(0);
- }
- printf("about to print %d (stmt: %d) mysql fields\n",
- mysql_num_fields(res), mysql_stmt_field_count(stmt));
- printf("%20s %20s %20s\n", "FROM", "TO", "PRIO");
- /* output fields 1 and 2 of each row */
- // while ((row = mysql_stmt_fetch(stmt)) != NULL) {
- while ((row = mysql_fetch_row(res)) != NULL) {
- printf("%20s %20s %20s\n", row[0], row[1], row[2]);
- }
- /* Release memory used to store results and close connection */
- // mysql_free_result(res);
- mysql_free_result(meta_res);
- mysql_stmt_close(stmt);
- mysql_free_result(res);
- mysql_close(conn);
- }
Add Comment
Please, Sign In to add comment