php、sql命令について質問です。


現在 LIKE を用いたSQL命令を作成しています。

SELECT * FROM TEST WHERE JOUTAI='1' and `BRAND` LIKE '%".$_POST["kensaku"]."%' or `PRODUCT` LIKE '%".$_POST["kensaku"]."%'

しかし、これに且つ状態が1という条件であるものを追加設定した瞬間。

実行したい結果が出てこず、見ると何も選択されていない画面状況になってしまいます。

多分

JOUTAI='1' and

の部分がおかしいとは思っているのですが

きちんとした命令文がわかるかたおりましたらお手数をおかけしますがよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2009/08/20 01:05:19
  • 終了:2009/08/20 01:27:01

ベストアンサー

id:chuken_kenkou No.1

chuken_kenkou回答回数722ベストアンサー獲得回数542009/08/20 01:15:34

ポイント100pt

OR条件があるので、最初の条件式を括弧で優先順位を明示する必要があります。

WHERE JOUTAI='1'
  and (`BRAND` LIKE '%".$_POST["kensaku"]."%' or `PRODUCT` LIKE '%".$_POST["kensaku"]."%')
id:aiomock

ご回答ありがとうございます。

2009/08/20 01:26:47
  • id:aiomock
    最初の命令文

    SELECT * FROM TEST WHERE `BRAND` LIKE '%".$_POST["kensaku"]."%' or `PRODUCT` LIKE '%".$_POST["kensaku"]."%'

    だとうまくいきました。

    しかし、JOUTAI='1' のものを選択するという条件を設定したかったので

    SELECT * FROM TEST WHERE JOUTAI='1' and `BRAND` LIKE '%".$_POST["kensaku"]."%' or `PRODUCT` LIKE '%".$_POST["kensaku"]."%'

    としたのですがうまくいきません。

  • id:aiomock
    すいません。。。

    すぐ終了させてしまったのですが

    SELECT * FROM TEST WHERE JOUTAI='1' and (`BRAND` LIKE '%".$_POST["kensaku"]."%' or `PRODUCT` LIKE '%".$_POST["kensaku"]."%')

    ですとエラーが発生してしまいます。

    なぜでしょうか。。。。
  • id:aiomock
    エラーメッセージ以下になります。

    #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP = ',P' and (`BRAND` LIKE '%^?%' or `PRODUCT` LIKE '%^?%')
  • id:kn1967
    今回も手抜きして、
      mysql_query("SELECT * FROM TEST ・・・・
    などと書いてるのではありませんか?
      $sql = "SELECT * FROM TEST ・・・・
      echo $sql;
      mysql_query($sql);
    のように確認点を入れればsyntax errorの原因箇所などは、すぐに判るはずです。
    逆に、確認用出力がないと、
      SQL文を生成している時にミスしているのか?
      受け渡し時にミスをしているのか?
    すら判らないでしょ?
    ネットの先にいる人も無駄に想像を廻らせる必要があり、
    想像が少しでも外れれば、混迷を極める事になります。
  • id:chuken_kenkou
    >syntax to use near 'GROUP = ',P' and (`BRAND` LIKE '%^?%' or `PRODUCT` LIKE '%^?%')

    GROUPといった列名を使っているのでしょうか?
    GROUPはMySQLの予約語ですから、表名や列名で使う場合、MySQLでは「`」(バッククォート)で囲む必要があります。
  • id:aiomock
    chuken_kenkou さん 

    ご回答ありがとうございます。

    まさに指摘いただいた通りでした。 

    無事に検索が出来ました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません