3

重複の可能性:
mysql_fetch_array() は、パラメーター 1 がリソースであると想定しており、select でブール値が指定されています

参照する行は、mysql_fetch_array()関数が呼び出される行です。を実行すると、クエリは正常に機能しますphpmyadmin。また、エラーはスローされません。どんな助けでも大歓迎です。

$query = "select distinct s.time, s.parameter, s.data, t.units from alertData as s, parameters as t where s.parameter like '%Airtemp_Avg%' and s.staID = 'WS_001_UHC' and s.interval_min = 15 and t.parameter like '%Airtemp_Avg%' and unix_timestamp(s.time) >= (unix_timestamp(now()) - 86400) order by time desc";
$results = mysql_query($query) || die(mysql_error());
$dataCnt = 0;
while($info = mysql_fetch_array($results)) {
    //15 Min data
    if(($dataCnt == 0) && (getTimestamp($info['time']) >= ($now - 4500))) 
       $data15['temp'] = $info['data'];
    else 
       $data15['temp'] = '-';

    $dataCnt++;
}
4

4 に答える 4

2

|| die (mysql_error())の後の を削除しmysql_query()ます。ブール値として評価されており、それがエラーの原因となっています。

編集:

bfavaretto が指摘したように、代わりに使用できますOR。これも PHP の矛盾の 1 つです。詳細については、論理演算子に関する PHP ドキュメントを参照してください (最初のコード サンプルのコメントを参照してください)。

于 2012-09-13T20:54:49.987 に答える
1

エラーが発生した場合、$results は false を返します。

次のようなものを使用して、結果を確認します。

if (false === $result) {
echo mysql_error();
}

また、mysql_ 関数は推奨されておらず、推奨されていません。代わりに PDO または MySQLi を使用してください。

于 2012-09-13T21:10:43.980 に答える
0
if ($results) { while...

実際に結果を確認する

于 2012-09-13T20:54:02.240 に答える
0

SQLクエリに何か問題があると思います。テーブルと列の名前が正しいことを確認し、DBに接続していることを確認してください。また、bfavarettoがor die(mysql_error())代わりに使用するように言っています。

100% 確実ではありませんが、クエリを次のようにすべきではありません。

$query = "select distinct s.time, s.parameter, s.data, t.units as s, parameters as t from alertData where s.parameter like '%Airtemp_Avg%' and s.staID = 'WS_001_UHC' and s.interval_min = 15 and t.parameter like '%Airtemp_Avg%' and unix_timestamp(s.time) >= (unix_timestamp(now()) - 86400) order by time desc";

それ以外の

$query = "select distinct s.time, s.parameter, s.data, t.units from alertData as s, parameters as t where s.parameter like '%Airtemp_Avg%' and s.staID = 'WS_001_UHC' and s.interval_min = 15 and t.parameter like '%Airtemp_Avg%' and unix_timestamp(s.time) >= (unix_timestamp(now()) - 86400) order by time desc";
于 2012-09-13T21:40:02.843 に答える