-1

センサーを読み取るためのコードを C で書きました。そのセンサーから int 値を取得します。その int 値を ''val'' という int 変数に格納しました。

ここで、「val」に格納された値を mysql データベースのテーブルに送信したいと考えています。データベースで 0 を取得し続けます。どうしてか分かりません。

コードは次のとおりです。

int main (int argc, char* argv[])
{   int val;  // val is a variable of type integer

CPhidgetInterfaceKitHandle ifKit =0;
CPhidgetInterfaceKit_create(&ifKit);

CPhidget_open((CPhidgetHandle)ifKit,-1);

CPhidget_waitForAttachment((CPhidgetHandle)ifKit,1000);
//Waiting max 1000ms till phidgetkit is connected.

while(1)
{
CPhidgetInterfaceKit_getSensorValue(ifKit,0,&val);
//Reading sensor 0 and stores value in variable val.
// &val = pointer to the memory location of val

if(val > 65){
CPhidgetInterfaceKit_setOutputState(ifKit, 0, 1);
}
else{
CPhidgetInterfaceKit_setOutputState(ifKit, 0, 0);
}

MYSQL *conn;

char *server = "*****";
char *user = "*****";
char *password = "*****";
char *database = "*****";

// Make the connection to the Mysql-database.
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, server,
     user, password, database, 0, NULL, 0)) {
  fprintf(stderr, "%s\n", mysql_error(conn));
  exit(1);
}

//Add values to table IRSensor
if (mysql_query(conn, "INSERT INTO IRsensor VALUES('val')" ))
  {exit (1);} 

printf("Value %d \n", val);
// Shows decimal value of val in terminal

usleep(800000); // delay of 800 ms before the sensor starts reading the next value
}

CPhidget_close((CPhidgetHandle)ifKit);
CPhidget_delete((CPhidgetHandle)ifKit);
return 0;
}
4

1 に答える 1

2

私は実際にそれが機能することに驚いています(そしてエラーをスローしません)。valstring を使用するだけでなく、実際に INSERT コマンドに補間する必要があります'val'

ただし、単純にこれを行うのではなく、ここに記載されているように、パラメータ化されたクエリを使用してください。

于 2013-10-18T21:09:45.433 に答える