アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
MYSQLとPHPを見よう見まねでやっている超初心者です。

$_POST['sample']はチェックボックスから取得してきたので複数の値があります。
その複数の値をwhere data = $where";にしてdataから複数の検索結果を取得したいと思っているのですが、下記のように書くと複数ある$_POST['sample']の一つしか検索取得できません。
$_POST['sample']の複数の値の検索結果を取得するにはどうすればよろしいのでしょうか?

基本的な事がわかっていない超初心者ですので
できれば具体的な式を教えて頂ければ大変助かります。
ご教授よろしくお願い致します。

if (isset($_POST['sample'])) {
for ($i = 0; $i < count($_POST['sample']); $i++) {
$where ='' . h($_POST['sample'][$i]) . '';
}
}
function h($string) {
return htmlspecialchars($string, ENT_QUOTES);
}

/////

$sql = "select * from test
where data = $where";
$result = mysql_query( $sql );

A 回答 (1件)

PHPに同名のデータを渡したいならちょっとした工夫が必要


またmysqlへのデータ渡しするときはhtmlspecialcharsではなく
mysql_real_escape_stringを使います。
whereの条件もINをつかうと便利です。

そのた踏まえて、こんな風にしてみては?

<form method="post">
<input type="text" name="sample[]"><br>
<input type="text" name="sample[]"><br>
<input type="text" name="sample[]"><br>
<input type="submit" value="go"><br>
</form>
<?PHP
$where="";

if (isset($_POST['sample']) and is_array($_POST['sample'])) {
$where .=" AND data in (";
foreach ($_POST['sample'] as $key=>$val) {
if($key>0) $where .=",";
$where .="'" .mysql_real_escape_string($val) . "'";
}
$where .=")";
}
$sql = "select * from test";
$sql .= " where 1";
$sql .= $where;
print $sql;
?>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご教授頂いたとおりに、あてはめて
やってみたら見事に上手くいました!
私には到底できないレベルです。
拙い質問の意味を理解していただき、
丁寧なご回答を頂いて大変助かりました。
たいへんお世話になりました。心より感謝申し上げます
本当にありがとうございます!

お礼日時:2012/04/11 13:19

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