我有三个带分贝感应器的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);在成功插入变量后,它应该将所有变量重置为null,以便可以重新填充变量。
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();
?>谢谢!
发布于 2017-10-17 20:30:56
你不应该为等待而烦恼。
相反,将您的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添加到表中。
并使用有意义的变量和表名,如果你想回到这个项目,你会感谢自己。
https://stackoverflow.com/questions/46789754
复制相似问题