對於我的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