2014-01-14 23 views
0

我的php文件有問題。我想爲我的氣象站的最新值創建一個JSON結果。如果我運行該文件,則表示沒有可用的數據。 但是,如果我在phpmyadmin執行相同的請求,它會顯示我最新的數據。有人可以幫助我:PHP - MySQL請求 - 找不到數據

這裏是php文件:

<?php 
    header('Content-Type: application/json'); 

include ("dbData.php"); 

$query = " 
SELECT datumzeit 
    , tempInnen 
    , tempAussen 
    , feuchteInnen 
    , feuchteAussen 
    , luftdruck 
    FROM wetterdaten 
ORDER 
    BY datumzeit DESC 
LIMIT 1; 
"; 

$q_data = mysql_query($query) or die(mysql_error()); 

if(mysql_num_rows($q_data) > 0) 
{ 
    $r_data = mysql_fetch_array($q_data); 
    $DATUM = $r_data['datumzeit']; 
    $tempInnen = number_format($r_data['tempInnen'], 2, '.', ''); 
    $tempAussen = number_format($r_data['tempAussen'], 2, '.', ''); 
    $feuchteInnen = number_format($r_data['feuchteInnen'], 2, '.', ''); 
    $feuchteAussen = number_format($r_data['feuchteAussen'], 2, '.', ''); 
    $luftdruck = number_format($r_data['luftdruck'], 2, '.', ''); 
} 
else 
{ 
$E = 1; 
$M = "Do Data available."; 
} 
    if(!isset($E)) 
    { 
?> 
{ 
    "wetterstation": [{ 
    "TempInnen": "<?php echo $tempInnen;?>", 
    "TempAussen": "<?php echo $tempAussen;?>", 
    "feuchteInnen": "<?php echo $feuchteInnen;?>", 
    "feuchteAussen": "<?php echo $feuchteAussen;?>", 
    "luftdruck": "<?php echo $luftdruck;?>" 
    ]} 
} 
<?php 
} 
    else 
    { 
     echo $M; 
    } 
?> 

編輯

解決:

後,我改變:

$q_data = mysql_query("SELECT datumzeit, tempInnen, tempAussen, feuchteInnen,feuchteAussen,luftdruck FROM wetterdaten ORDER BY datumzeit DESC LIMIT 1;")or die mysql:error()); 

到:

$query = " 
SELECT datumzeit 
    , tempInnen 
    , tempAussen 
    , feuchteInnen 
    , feuchteAussen 
    , luftdruck 
    FROM wetterdaten 
ORDER 
    BY datumzeit DESC 
LIMIT 1; 
"; 

$q_data = mysql_query($query) or die(mysql_error()); 
+1

我想這不應該是你查詢的結尾一個分號 - '... LIMIT 1;','只是LIMIT 1'。 – a1ex07

+2

你不應該手動生成你的json,只需要轉儲數組中的所有內容並使用'echo json_encode($ your_array)'。 – jeroen

+0

它刪除了ORDERED BY,同時複製了此線程中的代碼 –

回答

0

先刪除最後一個;從查詢和使用mysql_fetch_object爲限1
嘗試這樣的(未測試):

$q_data = mysql_query("SELECT datumzeit, tempInnen, tempAussen, feuchteInnen, feuchteAussen, luftdruck FROM wetterdaten LIMIT 1") or die(mysql_error()); 
if(mysql_num_rows($q_data) > 0) 
{ 
    $r_data = mysql_fetch_object($q_data); 
    $DATUM = $r_data->datumzeit; 
    $tempInnen = number_format($r_data->tempInnen, 2, '.', ''); 
    $tempAussen = number_format($r_data->tempAussen, 2, '.', ''); 
    $feuchteInnen = number_format($r_data->feuchteInnen, 2, '.', ''); 
    $feuchteAussen = number_format($r_data->feuchteAussen, 2, '.', ''); 
    $luftdruck = number_format($r_data->luftdruck, 2, '.', ''); 
} 
+0

否。保留最後的';'。這不是嚴格必要的,但是它更容易在那裏進行調試,並且PHP不關心任何方式。 – Strawberry

+0

如果最後';'是mysql查詢之一,最近我還發現mysql_query的查詢字符串不應以分號結尾。 (見http://www.php.net/mysql_query)......雖然不知道原因...... – aconrad

0

的代碼可以,如果你只需要一行被簡化,這樣可以更快地檢測出了什麼問題。

mysql_query page查詢字符串不應以分號結尾。

<?php 
header('Content-Type: application/json'); 

include ("dbData.php"); 

$query = "SELECT datumzeit, tempInnen, tempAussen, feuchteInnen, feuchteAussen, luftdruck FROM wetterdaten LIMIT 1"; 
$q_data = mysql_query($query) or die(mysql_error()); 
if ($r_data = mysql_fetch_assoc($q_data)) { 
    //you could use json_encode($r_data) here if not for number_format and wetterstation key 
    ?> 
    { 
    "wetterstation": [{ 
    "TempInnen": "<?php echo number_format($r_data['tempInnen'], 2, '.', '');?>", 
    "TempAussen": "<?php echo number_format($r_data['tempAussen'], 2, '.', '');?>", 
    "feuchteInnen": "<?php echo number_format($r_data['feuchteInnen'], 2, '.', '');?>", 
    "feuchteAussen": "<?php number_format($r_data['feuchteAussen'], 2, '.', ''); ?>", 
    "luftdruck": "<?php echo number_format($r_data['luftdruck'], 2, '.', '');?>" 
    ]} 
    } 
<?php 
}else{ 
    ?> Do Data available. <? 
}