我有三个Arduino MKR1000附有分贝传感器的。他们每 5 秒将传感器值发送到 PHP 脚本,该脚本将其放入数据库。
问题是我需要 PHP 脚本等待所有三个值更新后再将其插入数据库。
我如何存储最先更新的两个 Arduino 的值,当最后一个 Arduino 发送它的值时,它将所有三个值插入到数据库中?
我对这段代码的问题是,当更新一个变量时,其他变量重置为 null。
<?php
include("dbconnect.php");
$db01 = $_GET['db01']; //Decibel-sensor 1
$db02 = $_GET['db02']; //Decibel-sensor 2
$db03 = $_GET['db03']; //Decibel-sensor 3
我试图从这部分返回脚本,直到设置了所有值,但是当一个变量被更改时,其他变量被设置为空。
if ($db01 == null || $db02 == null || $db03 == null){
return;
}
$sql = "INSERT INTO DDW (db_01, db_02, db_03)
VALUES ('$db01', '$db02', '$db03');";
mysql_query($sql);
成功插入变量后,它应该将所有变量重置为空,这样它就可以重新开始填充变量。
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
$db01 = null;
$db02 = null;
$db03 = null;
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
谢谢!
最佳答案
你不应该为等待而烦恼。
而是将您的 DDW
表更改为类似的内容
--------------
|sensor|value|
然后一条一条插入你的数据
$sensor = $_GET['sensor'];
$value = $_GET['value'];
$db = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'dbuser', 'dbpass');
$stmt = $dbh->prepare("INSERT INTO DDW (sensor, value) VALUES (:sensor, :value)");
$stmt->bindParam(':sensor', $sensor);
$stmt->bindParam(':value', $value);
$stmt->execute();
如果需要,您还可以将插入时间和ID添加到表中。
并使用有意义的变量名和表名,如果你想回到这个项目,你会感谢自己。
关于php - PHP 脚本可以等待所有变量从不同的 Arduino 的/用户更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46789754/