[pgsql-jp: 28947] Re: メッセージの読み込みでエラー

Katsuyuki Maeda kei @ nanet.co.jp
2003年 2月 5日 (水) 18:46:06 JST


 前田@nanetです。

On Wed, 5 Feb 2003 18:20:00 +0900
"kenji" <kenji @ arka.jp> wrote:

> > この行の下で、echo $sql;してみればよいのでは?
> 
> これを実行しますと
> select * from kifu where title like '%%' title like '%%' title like '%%'
> title like %% order by nanki
 という結果が得られているのですから、

> > where 句の and やら or が抜けているだけではないでしょうか?
 の指摘の通りだと思います。

> 先日まで表示されていたのが、エラーが返るようになりました。
 先日まで表示されていたのと、他に何かが変っていませんか?

> if ($w1 != "記入なし"){$w1 = " title like '%$w1%'";}
> elseif($w1 == "記入なし"){$w1 = "";}
> if ($w2 != "記入なし"){$w2 = " title like '%$w2%'";}
> elseif($w2 == "記入なし"){$w2 = "";}
> if($w3 == "記入なし"){$w3 = "";}
> elseif($w1 == $w2){$w3 = " title like '%$w3%'";}
> elseif($w1 != "記入なし"){$w3 = " and title like '%$w3%'";}
> elseif($w2 != "記入なし"){$w3 = " and title like '%$w3%'";}
> if($w4 == "記入なし"){$w4 = "";}
> elseif($w1 == $w3){$w4 = " title like %$w4%";}
> elseif($w2 == $w3){$w4 = " title like %$w4%";}
> elseif($w1 != "記入なし"){$w4 = " and title like %$w4%";}
> elseif($w2 != "記入なし"){$w4 = " and title like %$w4%";}
> elseif($w3 != "記入なし"){$w4 = " and title like %$w4%";}

 ちょっとパズルになっていて追いきれませんが、以前はたまたま、
問題ないSQL分を出力していただけではないですか?

 今までの仕組みをそのままにするなら、以下の様に (true) を使うと、
簡単に書けるかも知れません。

| if ($w1 != "記入なし") {
| 	$w1 = " title like %$w1% ";
| }
| else {
| 	$w1 = "(true) ";
| }
| 
| if ($w2 != "記入なし") {
| 	$w2 = " and title like %$w1% ";
| }
| else {
| 	$w2 = " and (true) ";
| }

-- 
Nagasaki Network Service (http://www.nanet.co.jp/)
 kei @ nanet.co.jp <Katsuyuki Maeda> (http://www.nanet.co.jp/~kei/)
 kei-neverread @ nanet.co.jp (for spam ONLY ゴミ箱直行便)
「終わらないプロジェクトはない。終わっちゃうプロジェクトはあるけど。」




pgsql-jp メーリングリストの案内