对于我的inhome温度传感器,我使用的是使用php,sqlite,PDO和HTML的树莓派。PHP PDO选择查询返回双精度值
我已经创建源码
表使用
BEGIN;
CREATE TABLE waarden (datum TEXT, tijd TEXT, zone TEXT, lucht REAL, temperatuur REAL);
COMMIT;
我与DHT22 RPI记录一切细所以没有我创建了一个网页,使用以下php.file访问通过AJAX数据
<?php
function datumConversie($datum){
$delen = explode('/',$datum,3);
$geconverteerd = $delen[2].$delen[0].$delen[1];
return $geconverteerd;
}
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
$db = new PDO("sqlite:/home/pi/sensor.db");
$result_array = array();
$date = $_POST["datepicker"];
$waarde = datumConversie($date);
$tijd="";
$temperatuur="";
$query = "SELECT datum, tijd, zone,lucht, temperatuur FROM waarden WHERE datum = $waarde";
$result = $db->query($query);
foreach($result as $row)
{
array_push($result_array, $row);
}
echo json_encode($result_array);
$db = null;
?>
问题是,当我在浏览器响应看来,值返回两次。一次使用适当的字段名称,一次使用它们的列索引。 (0表示数据,1表示tijd等)。见下面
{“datum”:“20170601”,“0”:“20170601”,“tijd”:“00:01”,“1”:“00:01”,“zone”:“kelder” “2”:“kelder”,“lucht”:“53.0”,“3”:“53.0”,“temperatuur”:“24.3”,“4”:“24.3”}, {“datum”:“20170601 ”, “0”: “20170601”, “tijd”: “0点06分”, “1”: “0点06分”, “区”: “kelder”, “2”: “kelder”, “卢赫特”: “53.1”,“3”:“53.1”,“temperatuur”:“24.3”,“4”:“24.3”}, {“datum”:“20170601”,“0”:“20170601”“tijd” : “0点11分”, “1”: “0点11分”, “区”: “kelder”, “2”: “kelder”, “卢赫特”: “53.1”, “3”: “53.1”,” temperatuur“:”24.2“,”4“:”24.2“},
我该如何避免这种情况。我已经尝试了几次转换,最终可以正常工作,但这只是修补了一些缺陷而没有解决原因?
任何建议
真快,谢谢。 已添加 $ db-> setAttribute(PDO :: ATTR_DEFAULT_FETCH_MODE,PDO :: FETCH_OBJ); 现在一切都很完美!谢谢 – MaPo
值得一提的是,上面的OP代码示例易受SQL注入的影响。即使你知道/信任变量'$ waarde'来自哪里,它总是更好地使用准备好的语句。 – ecarrizo
@ecarrizo真的,我只是懒惰。修订 – RiggsFolly