/* SQL4.c */ #include #include "cgi-util.h" #include "global.h" #include "my_sys.h" #include "m_string.h" #include "mysql.h" #include "mysql_version.h" #include "errmsg.h" #include "getopt.h" #ifdef THREAD #include /* because of signal() */ #endif #define MAXSTR 20 void initDisplay() { printf("Content-type: text/html\n\n"); printf(""); printf(""); printf("SQL with C"); printf(""); printf("

Query Results


\n"); printf("
\n"); printf("\n"); } void endDisplay() { printf("
"); } MYSQL_RES *getResult(char *dbname, char *user, char *password, char *query) { MYSQL mysql; MYSQL *conn; MYSQL_RES *result; result = NULL; if (!(conn=mysql_connect(&mysql,"gold.mcs.csuhayward.edu",user,password))) printf("Cannot connect to host.\n"); else if (mysql_select_db(conn,dbname) < 0) printf("Cannot open database.\n"); else if (mysql_query(conn,query) < 0) printf("Query failed.\n"); else result = mysql_store_result(conn); return result; } void displayItem(char *item, int len) { printf("%s",item); } void displayHeader(MYSQL_RES *result) { int i, j; int num_fields; MYSQL_FIELD *fields; printf(""); num_fields = mysql_num_fields(result); fields = mysql_fetch_fields(result); for (i=0; i\n"); } void displayData(MYSQL_RES *result) { int num_fields, i; MYSQL_ROW myrow; MYSQL_FIELD *fields; num_fields = mysql_num_fields(result); fields = mysql_fetch_fields(result); while (myrow = mysql_fetch_row(result)) { printf(""); for (i=0; i\n"); } } void execQuery(char *dbname, char *user, char *password, char *query) { MYSQL_RES *result; result = getResult(dbname,user,password,query); if (!result) printf("Query failed.\n"); else { displayHeader(result); displayData(result); mysql_free_result(result); } } int main(int argc, char *argv[]) { char *dbname, *user, *password, *query, *title; /*to get string from the URL: str = getenv("QUERY_STRING"); */ initDisplay(); if (cgi_init() != CGIERR_NONE) exit(0); dbname = cgi_getentrystr("dbname"); user = cgi_getentrystr("user"); password = cgi_getentrystr("password"); title = cgi_getentrystr("title"); printf("%s",title); query = cgi_getentrystr("query"); execQuery(dbname,user,password,query); endDisplay(); cgi_quit(); }