• ベストアンサー

PHPで文字列検索

過去に出ていそうなのですが、見つける事が出来ませんでした。 すいませんがどうか宜しくお願い致します。。 HTML,PHP,MYSQLを用いてDBから取得した情報をHTMLに表示させたいのですが、 $sql = " SELECT  ITEM_ID, ITEM_NM FROM ITEM_LIST WHERE ITEM_DIV = "食品""; とすると、" "の中で文字列を指定している""でエラーが出てしまいます。 SELECT ITEM_ID, ITEM_NM FROM ITEM_LIST WHERE ITEM_DIV = "食品" 単体では正常に動作出来ています。 ご教授宜しくお願い致します。 (環境) PHP 5.2.6

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

そういうのはヒアドキュメントというのを使うと クォーテーションによって左右されません。 $sql =<<<eof SELECT ITEM_ID, ITEM_NM FROM ITEM_LIST WHERE ITEM_DIV = "食品" eof; 実際にところはSQL内ではダブルクォーテーションはつかわず シングルクォーテーションをつかうという不文律があります。 そのルールにのっとっておけばクォーテーションで競合するのを ある程度回避できます。 また一般にダブルクォーテーションの中のダブルクォーテーションは エスケープするだけでも効果があります。 $str="\"";

yu-ki0326
質問者

お礼

SQLのエスケープ文字、ヒアドキュメント、勉強になりました! ありがとうございます。 参考にもっともっと勉強に励みます!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kuma8055
  • ベストアンサー率28% (27/94)
回答No.1

文字列全体を囲む""と、食品を囲む""が同一であるために、PHP側で混乱しているのではないかと思います。 食品を''(シングルクォーテーション)で囲ってみてはどうでしょう。

yu-ki0326
質問者

お礼

初歩的な質問してしまってすいません。。 たしかシングルコーテーションも試して出来なかったハズなのですが、 指摘を受けたあとに再度試してみたら成功しました!! 失敗した時は、他の構文エラーだったのかな・・泣

すると、全ての回答が全文表示されます。

関連するQ&A