Arduino 变量使用 PHP 更新 MySQL 失败


Arduino variables updating MySQL using PHP fails

我正在使用能够发送HTTP的串行到WiFi模块。我做了一个草图,用PHP脚本更新MySQL中的表。我的问题是,使用变量时我无法更新表。它适用于静态值。我想知道Arduino草图中是否存在问题或使用HTTP命令的方法。

还可以查看下面来自 loop() 和 PHP 脚本的行:

 float tm = 21.8;
 Serial.write("AT+HTTPPH=/update1x.php?tmp=tm'n");  // Parse values to PHP script

如果我插入值 21.8 而不是变量 tm,它可以工作。

<?php
  $aa = (isset($_GET['tmp']) ? $_GET['tmp'] : null);
  mysql_connect('my.dk.mysql','my_dk','my_pw') or die("Can't connect that way!");
  @mysql_select_db('my_dk') or die("Unable to select a database called 'My'");
  date_default_timezone_set("Europe/Copenhagen");
  $dat = date("Y-m-d");
  $tim = date("H:i:s");
  $qry = "INSERT INTO temp1(temp, date, time) VALUES('$aa','$dat','$tim')";
  mysql_query($qry);
  mysql_close();
  exit('OK');
?>

因为 C 不会"扫描"字符串并用值来吸收"tm"(想想当你使用一个名为"i"或 like 的变量时应该发生什么......C 是很多"低"级别,您必须手动连接。实际上一个简单的可能是:

Serial.print("AT+HTTPPH=/update1x.php?tmp=");
Serial.print(tm);
Serial.print("'n");

可以使用 String 类,但您将动态使用 RAM,不建议在微控制器上使用女巫:

String s = "AT+HTTPPH=/update1x.php?tmp=";
s += tm;
s += "'n";
Serial.print(s);

请注意,我连接了一个字符串;这是因为在右边我们没有对象 String,而是 C 字符串:字符数组。这对tm无效

也是真正的 C 连接(字符串类中的应用可以在这里找到:如何在 C 中连接常量/文字字符串?