解決済み

フォームにダブルクォーテーションが含まれているとデータベースエラー

  • 暇なときにでも
  • 質問No.4018647
  • 閲覧数1111
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 77% (52/67)

HTMLのフォームから投稿された文字列を取得し、その文字列と一致する語をデータベース(MySQL)から検索するシステムを作成しております。
入力された文字列を調べるということまでは完了したものの、フォームに "(ダブルクォーテーション)が入っておりますとエラーが出るというものです。
原因は分かっているのですけれども、その対処法が思い浮かばずに困っております。
ソースは以下の通りです。


[form.html]
<form action="submit.php" method="POST">
<input type="text" name="word">
<input type="submit" name="submit" value="GO">
</form>

[submit.php]
$word = $_POST['word'];
$query_word = mysql_query(
 'SELECT * FROM tbword WHERE word like "%'.$word.'%";'
);
$result_word = mysql_fetch_object( $query_word );


上記の方法ですと、検索に「教えて"goo」となっていた場合、実際にはSQLに直されると
 (省略)WHERE word like "教えて"goo";
となってしまうからのようです。

ダブルクォーテーションを予め省くことも考えましたが、それではダブルクォーテーションを含む語を検索できなくなってしまいます。
どうにか、よい方法は無いでしょうか?宜しくお願い致します

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

  • 回答No.1

ベストアンサー率 55% (772/1382)

$wordを直に使わないで、引用符を二重化するエンコード処理を
施してからにしてはいかがでしょう。
×:WHERE word like "教えて"goo";
○:WHERE word like "教えて""goo";
お礼コメント
hiroko_ss

お礼率 77% (52/67)

ダブルクォーテーションが2つ入っていると分断されるのでエラーが出るかと思っていたのですが、そうでもないのですね。
どうもありがとうございます。
投稿日時 - 2008-05-13 11:09:31
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


OKWAVE若者応援スペシャル企画

ピックアップ

ページ先頭へ