Salve a tutti,
ho un problema con l'inserimento di alcuni dati ricevuti da una postazione client in un db mysql.
in pratica il problema è quando vado a inserire i dati nel db in questa riga:
mysql_query(conn,
"INSERT INTO dati (x, y, temperature) VALUES ( 'x', 'y', 'temp')");
}
in pratica mi inserisce i valori 0,0,0 perchè non vede x,y,temp come numeri ma come stringhe.
il codice completo è il seguente:
Codice PHP:
#include <mysql/my_global.h>
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define QUEUE_LEN 20
#define BUFF_SIZE 20
int main()
{
MYSQL *conn; /*comandi per inizializzare mysql */
MYSQL_RES *result;
MYSQL_ROW row;
int i = 1;
int temp; /*inizializza la varabile di temperatura */
int x; /* inizializza la varabile x */
int y; /* inizializza la varabile y */
int sk; /* Socket per la comunicazione del server */
int client; /* Socket per la comunicazione con il client */
int ret; /* Ritorno delle funzioni */
int len; /* Dimensione strutture dati */
struct sockaddr_in s_addr; /* Indirizzo Server */
struct sockaddr_in c_addr; /* Indirizzo Client */
int buffer[BUFF_SIZE]; /* definisco l'arrey Buffer di Ricezione dati */
int port = 2001; /* Porta del Server */
char address[] = "127.0.0.1"; /* Indirizzo IP del Server */
/* Creazione del socket */
sk = socket(AF_INET, SOCK_STREAM, 0);
while (i == 1)
{
/* Inizializzazione indirizzo del Server */
bzero(&s_addr, sizeof(s_addr));
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons(port);
s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
/* Bind del socket */
ret = bind(sk, (struct sockaddr*) &s_addr, sizeof(s_addr) );
/* Creazione coda di richieste di connessione */
ret = listen(sk, QUEUE_LEN);
/* Inizializzazione indirizzo del Client */
bzero(&c_addr, sizeof(c_addr));
len = sizeof(c_addr);
/* Accept connessioni con i client */
client = accept(sk, (struct sockaddr*)&c_addr, &len );
/* Ricezione Dati */
ret = recv(client, buffer, BUFF_SIZE, 0);
/* scomposizione array in variabili indipendenti */
int x = buffer[0];
int y = buffer[1];
int temp = buffer[2];
/*controllo dati ricevuti */
printf("Server Receive: x= %d\n", x);
printf("Server Receive: y= %d\n", y);
printf("Server Receive: temp= %d\n", temp);
/* scrittura in mysql */
conn = mysql_init(NULL);
if(!mysql_real_connect(conn, "localhost", "root", "pass", "rrobotics", 0, NULL, 0))
{
printf("cannot connect");
}
else{
mysql_query(conn,
"INSERT INTO dati (x, y, temperature) VALUES ( 'x', 'y', 'temp')");
}
mysql_close(conn);
/* Chiusura del socket di comunicazione con il Client */
close(client);
}
}
in pratica a me servirebbe riuscire ad inserire queste variabili che sono dei numeri nel db.
c'è qualcuno che mi può aiutare? grazie!!!