プロが教える店舗&オフィスのセキュリティ対策術

php初心者です。
お世話にになります。

id  content
1  テキスト1
2  テキスト2
3  テキスト3
4  テキスト4
5  テキスト5

上記のようなデータベースです。

下記の文で5行目のテキストを抽出する事は出来ています。
$query = 'SELECT * FROM tbl_batsu WHERE id = 5';

ランダム整数を生成し、5つの中から一つランダムにデータを抽出したいと考えています。

$num = rand(1, 5);
$query = 'SELECT * FROM tbl_batsu WHERE id = $num';

上記ですとエラーが出てしまいます。
Query failed: Unknown column '$num' in 'where clause'
そんなカラムはありませんという意味だとは思いますが・・・

初心者なもので的外れな質問になっているかも知れませんが、解決策が分かる方は是非ご教授頂ければありがたいです。

よろしくお願いします。

A 回答 (2件)

こんにちは。


問題は既に解決しているようですが、この辺の理解が不十分、と言う事で指摘しておきます。
引用符 (文字 ')と二重引用符 (")では動作が違いますので、注意してください。
http://jp2.php.net/string

すなわち、$numを変数として評価させたい場合は、二重引用符にすればOKです。
$query = "SELECT * FROM tbl_batsu WHERE id = $num";
    • good
    • 7

$query = "SELECT * FROM tbl_batsu WHERE id = ". $num ;





(余談です)
内部的に生成しているデータであっても SQLインジェクション対策はしてくださいね。上記の回答は インジェクションをまったく考慮していないだめ、セキュリティ的には無防備な方法です。
    • good
    • 2
この回答へのお礼

ありがとう御座います。

速攻で解決しました・・・

SQLインジェクション対策の方はこれから勉強します!

お礼日時:2007/11/18 01:48

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

このQ&Aを見た人はこんなQ&Aも見ています