【问题标题】:PHP - MySQL request - No data foundPHP - MySQL 请求 - 未找到数据
【发布时间】:2014-01-14 17:16:19
【问题描述】:

我的 php 文件有问题。我想为我的气象站的最新值创建一个 JSON 结果。如果我运行该文件,它会说没有可用的数据。 但是如果我在 phpmyadmin 执行相同的请求,它会显示最新的数据。谁能帮帮我:

这里是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());

【问题讨论】:

  • 我猜它不应该是你的查询末尾的分号 - ` ...LIMIT 1;` ,只是LIMIT 1
  • 您不应该手动生成 json,只需将所有内容转储到数组中并使用 echo json_encode($your_array)
  • 它在复制此线程中的代码时删除了 ORDERED BY
  • 请不要使用已弃用的函数 (mysql_)
  • 你需要做一些基本的调试,比如一些var_dump()在相关变量的不同阶段。

标签: php mysql sql json select


【解决方案1】:

先删除最后一个;从查询并使用 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, '.', ''); 
}

【讨论】:

  • 没有。保留最后一个';'。这不是绝对必要的,但在那里使用它进行调试更容易,而且 PHP 并不关心任何一种方式。
  • 如果最后一个 ';'是mysql查询之一,最近我还发现mysql_query中的查询字符串不应该以分号结尾。 (见php.net/mysql_query)......虽然不知道原因......
【解决方案2】:

如果您只需要一行代码,可以简化代码,这样您可以更快地发现问题所在。

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. <?
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2021-12-07
    • 2014-04-13
    • 1970-01-01
    相关资源
    最近更新 更多