【问题标题】:php $_GET array insert to mysqli?php $_GET 数组插入到 mysqli?
【发布时间】:2016-03-22 05:52:40
【问题描述】:

我是 mysqli 的新手,在 php 方面也好不了多少 我的目标是从我家周围的传感器收集数据,每个传感器将以表格形式将数据发送到我的 php 页面 http://192.168.1.100/input.php?time=9999-12-31+23:59:59&sensor1=72.4

sensor1 可以是任何东西,我确实让它为每个出现的新传感器创建一个新列。时间将永远存在。一些传感器可能会发送不止一个数据块 (?sensor1temp=72.4&sensor1humidity=37)。

我需要一种方法将所有 $_GET 数据读入一个数组,然后将其写入我数据库中的新行

我正在使用类似的东西

foreach ($_GET as $key => $value){
$sql = "INSERT INTO $table ($key)
VALUES ('$value')";

if ($mysqli->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $mysqli->error;
}

}

但当然这会创建一堆行而不是一行包含一堆数据...

在我让它工作后当然会添加健全性检查,即使它只是在我的本地局域网上。

【问题讨论】:

    标签: php mysql arrays mysqli


    【解决方案1】:

    试试这个:

    $query = "INSERT INTO ".$table;
    $fields = array(); 
    $values = array();
    
    foreach($_GET as $key=>$val) {
       $fields[] = "`$key`"; 
       $values[] = "'".mysql_real_escape_string($val)."'";
    }
    
    $query .= " (".implode(", ", $fields).") VALUES (".implode(", ", $values).")";
    
    if ($mysqli->query($sql) === TRUE)
    
    /* Other code */
    

    希望这会有所帮助。

    和平! xD

    【讨论】:

    • 由于某种原因,这没有正确传递值
    • 如果我添加一个 echo "$query";在 $query 下方 .= 如果我通过它,我会得到 INSERT INTO tbl (sensor1) VALUES ('') ?sensor1=658
    • 如果我通过它 ?sensor1=658&sensor2=987&sensor3=8 我得到 INSERT INTO tbl (sensor1, sensor2, sensor3) VALUES ('', '', '')
    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2013-08-24
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多