0

多くのことを行うスクリプトを実行していますが、クエリしているDBで動作するPervasiveステートメントをphpで動作させようとしています。私はすべてのトリックを試しましたが、これが表示されるはずのテーブルでこれを機能させることに成功しませんでした.

$pom = $dbx->getOne('SELECT (SELECT SUM(wrt_sls) FROM wrt 
        WHERE wrt_cat = \'POM\' 
        AND wrt_cng_dat_4 >= '.$start.' 
        AND wrt_cng_dat_4 <= '.$end.' 
        AND wrt_pft_ctr in '.$pcs.') +
        (SELECT SUM(wrt_sls) FROM wrt 
        WHERE wrt_cat in (\'BED\',\'MP\')
        AND wrt_vend_id = \'PROTECTABED\' 
        AND wrt_cng_dat_4 >= '.$start.' 
        AND wrt_cng_dat_4 <= '.$end.' 
        AND wrt_pft_ctr in '.$pcs);

繰り返しますが、Pervasive では正しい結果が得られますが、実際のアプリケーションでは何も得られません。任意のヒント?

4

2 に答える 2

0

最初にチェックするのは、$start、$end、および $pcs の値です。たとえば、それらを使用している方法では、INT 値のように見えます。ただし、テーブル内の列が INT 型でない場合、それらはクエリで正しく引用されません。また、クエリが正しく機能するために必要な末尾の ) も表示されません。次のようにクエリを書き直す必要がある場合があります。

$pom = $dbx->getOne("SELECT (SELECT SUM(wrt_sls) FROM wrt 
        WHERE wrt_cat = 'POM' 
        AND wrt_cng_dat_4 >= '" . $start . "' 
        AND wrt_cng_dat_4 <= '" . $end . "' 
        AND wrt_pft_ctr in '" . $pcs . "') +
        (SELECT SUM(wrt_sls) FROM wrt 
        WHERE wrt_cat in ('BED','MP')
        AND wrt_vend_id = 'PROTECTABED' 
        AND wrt_cng_dat_4 >= '" . $start . "' 
        AND wrt_cng_dat_4 <= '" . $end . "' 
        AND wrt_pft_ctr in '" . $pcs ."')");
于 2013-01-17T03:21:29.670 に答える
0

いいえ、それもうまくいかないようですが、私は別のアプローチを取り、これが最終的に機能したものです...

$pom = $dbx->getOne('
    SELECT SUM(wrt_sls) FROM wrt 
        WHERE wrt_cat = \'POM\' 
        AND wrt_cng_dat_4 >= '.$start.' 
        AND wrt_cng_dat_4 <= '.$end.' 
        AND wrt_pft_ctr in '.$pcs);

$pab = $dbx->getOne('
    SELECT SUM(wrt_sls) FROM wrt 
        WHERE  wrt_cat = \'BED\'
        AND wrt_vend_id = \'PROTECTABED\' 
        AND wrt_cng_dat_4 >= '.$start.' 
        AND wrt_cng_dat_4 <= '.$end.' 
        AND wrt_pft_ctr in '.$pcs);

$protect = $pom + $pab;

$tpom += $protect;

返信ありがとうございます。

于 2013-01-17T14:50:53.790 に答える