0

私はこのようなエラーがあります:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\lab\try.php on line 40

クエリは次のとおりです。

$graphquery = mysql_query ("SELECT
  $cluster,
  SUM(IF(idx=3,1,0)) AS green,
  SUM(IF(idx=2,1,0)) AS yellow,
  SUM(IF(idx=1,1,0)) AS red
FROM (SELECT
        $cluster
        $xcond
        ,LEAST(999 $acond) idx 
      FROM table
      WHERE date >= '". $startDate ."'
          AND date <= '". $endDate ."'
          AND $regional = '$gregcond'
          AND $latitude IS NOT NULL 
      GROUP BY $cluster, $lac, $mainid
      HAVING $cluster IS NOT NULL
$paraxcond
      ) A
GROUP BY $cluster");

クエリをエコーすると、次のようになります(エラーなし、完璧な結果もあります):

SELECT
  cluster,
  SUM(IF(idx=3,1,0)) AS green,
  SUM(IF(idx=2,1,0)) AS yellow,
  SUM(IF(idx=1,1,0)) AS red
FROM (SELECT
        cluster,
        ROUND(AVG(some_value_Index))    some_value_Index,
        LEAST(999, AVG(some_value_Index) )    idx
      FROM TABLE
      WHERE tanggal >= '2012-07-10'
          AND tanggal <= '2012-08-02'
          AND Regional = 'Regional_Example'
          AND Latitude IS NOT NULL
      GROUP BY cluster, Lac, ID
      HAVING cluster IS NOT NULL
          AND some_value_Index IN(3,2,1)) A
GROUP BY cluster

そのスクリプトにmysql_errorを追加すると、次のように聞こえます。

Incorrect parameter count in the call to native function 'LEAST'

そして、これがMYSQLクエリを使用する方法です:

$row = mysql_fetch_array ($graphquery)

クエリをECHOして、SQLYOGまたはPHPMYADMINで試してみると、エラーは含まれていません。エラーがどこにあるか教えてもらえますか?

4

1 に答える 1

2

LEAST()関数でコンマを見逃しました。LEASTは、2つ以上のパラメーターを予期します。したがって、クエリは次のようになります。

mysql_query ("SELECT
  $cluster,
  SUM(IF(idx=3,1,0)) AS green,
  SUM(IF(idx=2,1,0)) AS yellow,
  SUM(IF(idx=1,1,0)) AS red
FROM (SELECT
        $cluster
        $xcond
        ,LEAST(999, $acond) idx 
      FROM table
      WHERE date >= '". $startDate ."'
          AND date <= '". $endDate ."'
          AND $regional = '$gregcond'
          AND $latitude IS NOT NULL 
      GROUP BY $cluster, $lac, $mainid
      HAVING $cluster IS NOT NULL
$paraxcond
      ) A
GROUP BY $cluster");

に変更LEAST(999 $acond)しましたLEAST(999, $acond)

于 2012-08-02T04:25:31.600 に答える