0

2 つの mysql クエリと各クエリの if ステートメントを含む php ファイルがあります。最終出力で 2 つの結果を結合し、カンマで区切ってください。現在、最初の if ステートメントは機能していますが、2 番目のステートメントは機能していません。

$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」の値になり、2 番目のクエリの結果が「69.4」の値になることがわかっています。しかし、最終的な結果は「example text 1, example text 2」ですが、「example text 1, na」となります。私が間違っていることについてのアイデアはありますか?

4

3 に答える 3

0

PHP 5 以降に廃止された MYSQL は使用しないでください。代わりにMYSQLiまたはPDOを使用してください。それらはより安全で、改善された機能を提供します。

PHP 変数に値を代入する前に null 値を代入するのも良い方法です。特にこの場合は ($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 クエリを 1 つにまとめた方がよいでしょう。

$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 に答える