• ベストアンサー

演算子を使わずに書く

$sqlを「.=」を使わずに書きたいんですが、複雑でよく分かりません。 どなたか書いてもらえませんか? $sql ="update table set flg=0 where id in("; $flg=true; foreach($_POST["del"] as $val){ if($flg) {$flg=false;} else {$sql.=",";} $sql .="'".mysql_real_escape_string($val)."'"; } $sql .=")"; よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

微妙な質問ですね・・・そもそも >$sqlを「.=」を使わずに書きたい の意図するところがわからないとなんとも言えないですね。 結局$sqlに文字列を継ぎ足していくしかないんですから implodeでやるやり方を参考にあげておきます ただこれも結局は「.=」しているんですけどね <?PHP $sql ="update table set flg=0 where 0"; $del=(isset($_POST["del"]) and is_array($_POST["del"]))?$_POST["del"]:null; foreach((array) $del as $key=>$val){ if($val==="") unset($del[$key]); else $del[$key] =mysql_real_escape_string($val); } if(count((array) $del)>0) $sql.=" OR id IN('".implode($del,"','")."')"; print $sql; ?> <form method="POST"> <div><input type="text" name="del[]" value="1"></div> <div><input type="text" name="del[]" value="2"></div> <div><input type="text" name="del[]" value="3"></div> <div><input type="submit" value="go"></div> </div> </form> ちなみにdelのidが受けられなかったとき更新しないようにするには where 0としておくとよいです。

egawa0812
質問者

お礼

ありがとうございます。 試してみます。

関連するQ&A