在php中组合多个if语句的结果

时间:2013-10-15 19:08:20

标签: php mysql if-statement

我有一个带有两个mysql查询的php文件,每个查询都有一个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”。关于我做错了什么想法?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

mysql_query不会返回您需要传递给it returns a resourcemysql_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;

答案 2 :(得分:0)

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

在为PHP变量赋值之前,为PHP变量赋值是一个很好的实践,特别是在这种情况下($ret =""然后你可以改变它)。

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

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

希望这有帮助!