プロが教えるわが家の防犯対策術!

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

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

A 回答 (1件)

$wordを直に使わないで、引用符を二重化するエンコード処理を


施してからにしてはいかがでしょう。
×:WHERE word like "教えて"goo";
○:WHERE word like "教えて""goo";

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/string-sy …
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/05/13 11:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!