解決済みの質問
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
$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
0人が「このQ&Aが役に立った」と投票しています