正在尝试将C程序连接到phpMyAdmin

正在尝试将C程序连接到phpMyAdmin,php,mysql,c,phpmyadmin,arduino,Php,Mysql,C,Phpmyadmin,Arduino,我一直在尝试将我的Arduino成功连接到我的phpMyAdmin服务器,但一直未能成功。Arduino连接了一些超声波传感器(用于测量距离),由于某些原因,并非所有的值都被发送到服务器。我不应该这么复杂 因此,每个传感器都有自己的id、测量距离和传感器所在的标高 id是用来识别传感器的(duh!),但由于某种原因,我得到的这个值是0,我认为这是因为它只读取第一个传感器的值(id为0) 让我给你们看我的代码,这是一种重复的方法,我认为我的错误是不能多次发送信息,比如从每个传感器分离信息,它只发送

我一直在尝试将我的Arduino成功连接到我的phpMyAdmin服务器,但一直未能成功。Arduino连接了一些超声波传感器(用于测量距离),由于某些原因,并非所有的值都被发送到服务器。我不应该这么复杂

因此,每个传感器都有自己的id、测量距离和传感器所在的标高

id是用来识别传感器的(duh!),但由于某种原因,我得到的这个值是0,我认为这是因为它只读取第一个传感器的值(id为0)

让我给你们看我的代码,这是一种重复的方法,我认为我的错误是不能多次发送信息,比如从每个传感器分离信息,它只发送前4个值,这就是它在数据库上显示的

void loop(){

  int distance;

  //=======

  for (uint8_t i = 0; i < SONAR_NUM; i++) {   

    if( cm[i] > 10 || cm[i]==0){

      distance = cm [i];//delete if no 
    }
    else{
      distance = cm[i];
      //Serial.println(distance);


    }
  }

  for (uint8_t i = 0; i < SONAR_NUM; i++) {
    if (millis() >= pingTimer[i]) {
      pingTimer[i] += PING_INTERVAL * SONAR_NUM;
      if (i == 0 && currentSensor == SONAR_NUM - 1)
        sonar[currentSensor].timer_stop();
      currentSensor = i;
      cm[currentSensor] = 0;

      sonar[currentSensor].ping_timer(echoCheck);
    }
    //client.stop();
  }

  //===================================================
  if(client.connect(serverName, 80) )
  {
    //Serial.println("Connected");
    if (client.connected()){
      delay(100);
      //Serial.println("Client is available, CONNECTED!");
      //client.print( "GET /add.php?distance=");
     ////////////// 
     int lvl = 0;
  for (uint8_t i = 0; i < SONAR_NUM; i++) {
    if(i<2)
      lvl = 1;
    else if (i>1 && i<3)
      lvl =2;
     else
       lvl = 3;

     Serial.print("SPOT: ");
     client.print( "GET /sendfromarduino.php?sensorID=");
     Serial.print(i);
     client.print (i);

     Serial.print(" DISTANCE: ");
     Serial.print(cm[i]);
     distance = cm[i];
     client.print( "&value=");
     client.print(distance);
     Serial.print("cm ");

     Serial.print(" LEVEL: ");
     client.print( "&level=");
     Serial.print (lvl);
     client.print (lvl);


  }
  Serial.println(); 
  //////////////////////////////////////
//      Serial.print("Distance: ");
//      client.print(distance);
//      Serial.println(distance);
      client.println( "HTTP/1.1");
      client.println( "Host: test.testserver.com" );
      client.println( "Content-Type: application/x-www-form-urlencoded" );
      client.println();
      client.println();
      client.stop();
    }
    else
    {
      //Serial.println(distance);
      Serial.println("Connection Failed");
    }
  }
  delay(100);
}
void循环(){
整数距离;
//=======
对于(uint8_t i=0;i10 | | cm[i]==0){
距离=厘米[i];//如果否,则删除
}
否则{
距离=厘米[i];
//串行打印LN(距离);
}
}
对于(uint8_t i=0;i=pingTimer[i]){
pingTimer[i]+=PING_间隔*声纳数量;
如果(i==0&¤tSensor==SONAR\u NUM-1)
声纳[电流传感器]。定时器_停止();
电流传感器=i;
cm[电流传感器]=0;
声纳[电流传感器]。ping_定时器(echoCheck);
}
//client.stop();
}
//===================================================
if(client.connect(serverName,80))
{
//Serial.println(“已连接”);
if(client.connected()){
延迟(100);
//println(“客户端可用,已连接!”);
//print(“GET/add.php?distance=”);
////////////// 
int lvl=0;
对于(uint8_t i=0;iif(client.connected())

它应该是
while(client.connected())


问题解决了!感谢所有花时间回答我问题的人!

它是否将所有正确的信息打印到串行端口?如果它没有从arduino中出来,那么首先要解决的问题是你的PHP是不可能的。如果是,那么让PHP将所有内容转储到一个文件中,看看它得到的数据是否有效。@Sachlen Yeah、 它正在将所有信息正确地打印到串行端口,但当涉及到客户端时,它没有。如何使php将所有内容转储到一个文件中?我会将
GET
代码打印到串行端口,就像您试图将其打印到以太网客户端一样,然后尝试在PC上执行请求,以确保您的查询格式正确。健全性检查:SONAR_NUM的定义是什么?定义在哪里?同样是书面的,当
true
false
时,您的第一个条件执行相同的操作。。。
<?php


        $db = new PDO('mysql:host=localhost;dbname=test_alpha;charset=UTF-8', 'test_alpha', 'testtest');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

        $sensorID = intval($_GET['i']);
        //$time = CURRENT_TIMESTAMP;
        $value = intval($_GET['distance']);
        $level = intval($_GET['lvl']);


        $sql = "INSERT INTO `pspace`(`sensorID`, `time`, `value`, `level`) VALUES ('$sensorID',CURRENT_TIMESTAMP,'$value','$level')";

        $stmt = $db->query($sql);
        //echo json_encode(array('spaces'=>$stmt->fetchAll(PDO::FETCH_ASSOC)));

    ?>