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

解決済みの質問

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

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";
となってしまうからのようです。

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

投稿日時 - 2008-05-13 10:32:22

QNo.4018647

暇なときに回答ください

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

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

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/string-syntax.html

投稿日時 - 2008-05-13 10:55:57

お礼

ダブルクォーテーションが2つ入っていると分断されるのでエラーが出るかと思っていたのですが、そうでもないのですね。
どうもありがとうございます。

投稿日時 - 2008-05-13 11:09:31

ANo.1

0人が「このQ&Aが役に立った」と投票しています

あわせてチェックしたい
  • style.visibility="hidden"; ...
  • fetch_arrayでのエラー ...
  • submitについて ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら