0

我有一个 php 文件,其中包含两个 mysql 查询和每个查询的 if 语句。我希望最终输出将两个结果结合起来并用逗号分隔。现在,第一个 if 语句正在工作,但第二个没有。

$result = mysql_query("SELECT round(AVG(cop),1) AS 'avg_cop' FROM table WHERE timestamp >= subdate((select max(timestamp) from table), interval 1 week)");
if ($result < 3.41)
    {
    $ret = "example text 1";
    } else {
    $ret = "na";
    }

$result1 = mysql_query("SELECT round(AVG(temp),1) AS 'avg_temp' FROM table WHERE timestamp >= subdate((select max(timestamp) from table), interval 1 week)");
if ($result1 < 53)
    {
    $ret1 = "example text 2";
    } else {
    $ret1 = "na";
    }


echo $ret.", ".$ret1;

在这种情况下,我知道第一个查询的结果是“1.1”,第二个查询的结果是“69.4”。但是,我得到的最终结果是“示例文本 1,示例文本 2”,而它应该是“示例文本 1,na”。关于我做错了什么的任何想法?

4

3 回答 3

0

不要使用自 PHP 5 起已弃用的 MYSQL,改用MYSQLiPDO;它们更安全,为您提供改进的功能。

在为 PHP 变量分配值之前为其分配一个空值也是一种很好的做法,尤其是在这种情况下($ret =""然后您可以更改该值)。

最后,结果来自mysql_query()一个资源,您需要遍历它以获得正确的值:

while ($row = mysql_fetch_assoc($result)):
    //Do something with $row['avg_temp'];
endwhile;

希望这可以帮助!

于 2013-10-15T19:19:26.663 回答
0

mysql_query不返回行本身,它返回一个资源,您需要将其传递给mysql_fetch_array()mysql_fetch_assoc()之类的函数来处理表结果;你不能简单地使用 mysql_query 的返回值。如果您只是将 SQL 查询合并为一个,也可能会更好。

$result = mysql_query("SELECT round(AVG(cop),1) AS 'avg_cop', round(AVG(temp),1) AS 'avg_temp' FROM table WHERE timestamp >= subdate((select max(timestamp) from table), interval 1 week)");
$row = mysql_fetch_assoc($result);

if ($row['avg_cop'] < 3.41)
{
    $ret = "example text 1";
} else {
    $ret = "na";
}

if ($row['avg_temp'] < 53)
{
    $ret1 = "example text 2";
} else {
    $ret1 = "na";
}

echo $ret.", ".$ret1;
于 2013-10-15T19:17:41.890 回答
0

$result 和 $result1 当前是字符串。您要添加:

$result = mysql_query("SELECT ... // unchanged");
$result = floatval($result)
if ($result < 3.41)

和 $result1

$result1 = mysql_query("SELECT ... // unchanged");
$result1 = floatval($result1)
if ($result1 < 53.0) // note the addition of the .0 to compare one float to another
于 2013-10-15T19:12:12.243 回答