Guest User

Untitled

a guest
Jul 18th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <mysql.h>
  3.  
  4. main() {
  5. MYSQL *conn;
  6. MYSQL_RES *res, *meta_res;
  7. MYSQL_ROW row;
  8.  
  9. // this is for binding
  10. MYSQL_STMT *stmt;
  11. // number of value to be bound
  12. int numvalues = 1;
  13. MYSQL_BIND bind[numvalues];
  14.  
  15. char *server = "localhost";
  16. char *user = "root";
  17. char *password = "hardc0d3d";
  18. char *database = "database";
  19.  
  20. // prio is bound input variable in SELECT
  21. int prio;
  22. int param_count;
  23.  
  24. // init db connection
  25. conn = mysql_init(NULL);
  26. if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) {
  27. fprintf(stderr, "%s\n", mysql_error(conn));
  28. exit(0);
  29. }
  30.  
  31. stmt = mysql_stmt_init(conn);
  32. if (!stmt) {
  33. fprintf(stderr, " mysql_stmt_init(), out of memory\n");
  34. exit(0);
  35. }
  36.  
  37. char *query = "SELECT id, foo, bar FROM table WHERE result=(?)";
  38. // prepare query
  39. if (mysql_stmt_prepare(stmt, query, strlen(query))) {
  40. fprintf(stderr, " mysql_stmt_prepare() failed\n");
  41. fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  42. exit(0);
  43. }
  44. printf("prepare successful\n");
  45.  
  46. // Get the parameter count from the statement
  47. param_count= mysql_stmt_param_count(stmt);
  48. printf("total parameters in query: %d\n", param_count);
  49.  
  50. if (param_count != numvalues) {
  51. fprintf(stderr, " invalid parameter count returned by MySQL\n");
  52. exit(0);
  53. }
  54.  
  55. // bind the INPUT data
  56. memset(bind, 0, sizeof(bind));
  57.  
  58. /* INTEGER PARAM */
  59. /* This is a number type, so there is no need to specify buffer_length */
  60. bind[0].buffer_type= MYSQL_TYPE_LONG;
  61. bind[0].buffer= (char *)&prio;
  62. bind[0].is_null= 0;
  63. bind[0].length= 0;
  64.  
  65. /* STRING PARAM */
  66. /*
  67. bind[1].buffer_type= MYSQL_TYPE_STRING;
  68. bind[1].buffer= (char *)str_data;
  69. bind[1].buffer_length= STRING_SIZE;
  70. bind[1].is_null= 0;
  71. bind[1].length= &str_length; */
  72.  
  73. /* SMALLINT PARAM */
  74. /*
  75. bind[2].buffer_type= MYSQL_TYPE_SHORT;
  76. bind[2].buffer= (char *)&small_data;
  77. bind[2].is_null= &is_null;
  78. bind[2].length= 0; */
  79.  
  80. // bind the buffers
  81. if (mysql_stmt_bind_param(stmt, bind)) {
  82. fprintf(stderr, " mysql_stmt_bind_param() failed\n");
  83. fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  84. exit(0);
  85. }
  86.  
  87. // Specify the data values for the query
  88. prio = 1; /* integer */
  89.  
  90. // execute
  91. if (mysql_stmt_execute(stmt)) {
  92. fprintf(stderr, " mysql_stmt_execute(), 1 failed\n");
  93. fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  94. exit(0);
  95. }
  96.  
  97. //res = mysql_stmt_store_result(stmt);
  98. res = mysql_use_result(conn);
  99. // fetch result set metadata
  100. meta_res = mysql_stmt_result_metadata(stmt);
  101. if (!meta_res) {
  102. fprintf(stderr,
  103. " mysql_stmt_result_metadata(), \
  104. returned no meta information\n");
  105. fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
  106. exit(0);
  107. }
  108. printf("about to print %d (stmt: %d) mysql fields\n",
  109. mysql_num_fields(res), mysql_stmt_field_count(stmt));
  110. printf("%20s %20s %20s\n", "FROM", "TO", "PRIO");
  111. /* output fields 1 and 2 of each row */
  112. // while ((row = mysql_stmt_fetch(stmt)) != NULL) {
  113. while ((row = mysql_fetch_row(res)) != NULL) {
  114. printf("%20s %20s %20s\n", row[0], row[1], row[2]);
  115. }
  116.  
  117.  
  118. /* Release memory used to store results and close connection */
  119. // mysql_free_result(res);
  120. mysql_free_result(meta_res);
  121. mysql_stmt_close(stmt);
  122. mysql_free_result(res);
  123. mysql_close(conn);
  124. }
Add Comment
Please, Sign In to add comment