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

HPにキーワード検索を導入しようと思っているのですがどうもうまくいきません。

現在は下記のように記述しています

POSTパラメータを取得
$word = $_POST['word'];

//SQL文
$sql = 'SELECT * FROM `table` WHERE `word` LIKE \'%$word%\' LIMIT 0, 30 ';
   ↑
ここに直接ワードを入力したら正常に検索できました。
ポストで受け取ったデータを何かに変換しないと検索できないのでしょうか?
宜しくお願いします。

A 回答 (2件)

' '内では変数が展開されません


$sql = "SELECT * FROM `table` WHERE `word` LIKE '%$word%' LIMIT 0, 30 ";
" "で囲むか
$sql = 'SELECT * FROM `table` WHERE `word` LIKE \'%' . $word . '%\' LIMIT 0, 30 ';
引用符の外に出しましょう

この回答への補足

正常に動きました!!ありがとうございました。

補足日時:2006/02/01 11:48
    • good
    • 0

質問とは関係ないことですがアドバイスを


外部から来た変数$_POSTをそのまま使うことはセキュリティー上危険です。
SQLインジェクションという言葉もあります。
変数をクエリ内で使う場合には
$word = mysql_real_escape_string($_POST['word']);
のようにエスケープしましょう。
    • good
    • 0
この回答へのお礼

お気遣い頂きありがとうございます。本当に感謝しています。ありがとうございました。

お礼日時:2006/02/01 11:50

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