#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
#include "global.h"
#include "db_misc.h"
#include "db_mysql.h"
MYSQL mysql;
extern char *db_host, *db_name, *db_user, *db_password;
int db_open(void)
{
int ret = 0;
MYSQL *res = NULL;
if ((db_host == NULL) || (db_name == NULL) || (db_user == NULL) || (db_password == NULL))
return DB_E_CREDENTIALS;
if ((!(*db_host)) || (!(*db_name)) || (!(*db_user)) || (!(*db_password)))
return DB_E_CREDENTIALS;
mysql_init(&mysql);
if (!(mysql_real_connect(&mysql, db_host, db_user, db_password, db_name, 0, NULL, 0)))
return DB_E_CONNECT;
ret = mysql_select_db(&mysql, db_name);
if (ret) {
mysql_close(&mysql);
return DB_E_DATABASE;
}
return DB_E_SUCCESS;
}
void db_close(void)
{
mysql_close(&mysql);
}
int db_insert_data(char *tname, char **nfields, char **fields)
{
int ret = 0, n = 0;
char *query = NULL;
/*
Gather up combined length
of fields, and number of fields.
*/
for (ret = 0, n = 0; fields[n]; n++)
ret += strlen(fields[n]);
ret += (n * 2); /* quotes */
ret += n; /* commas */
/*
Count prepended text length
*/
ret += strlen(db_name);
ret += 23; /* "INSERT INTO " " VALUES (" ")" */
query = (char *)malloc(ret);
if (query == NULL)
return DB_E_MEM;
memset((char *)query, 0, ret);
snprintf(query, ret, "INSERT INTO %s VALUES (", tname);
for (n = 0; fields[n]; n++) {
strncat(query, "'", ret);
strncat(query, fields[n], ret);
if (!fields[n + 1])
strncat(query, "')", ret);
else
strncat(query, "',", ret);
}
ret = mysql_real_query(&mysql, query, strlen(query));
free(query);
if (ret) {
global_error("Database query failed", 0, 0);
exit(1);
}
return DB_E_SUCCESS;
}
syntax highlighted by Code2HTML, v. 0.9.1