2014-01-14 3 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; 
    } 
?> 

EDIT

Решено:

После того, как я изменил:

$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;', 'просто ПРЕДЕЛ 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. <? 
} 
Смежные вопросы