我期待不同的SQL结果

时间:2012-10-19 21:54:01

标签: php mysql

我正在使用它:

foreach($affid as $id) {

   $id = @mysql_real_escape_string(strip_tags($id));

   $otherid = $_POST['postid'];

   $sql = "UPDATE dlbprog SET affId=".$id." WHERE id=".$otherid;

   echo $sql;

   //@mysql_query($sql) or die(mysql_error());
}

结果就是这样:

UPDATE dlbprog SET affId=323 WHERE id=5
UPDATE dlbprog SET affId=424 WHERE id=5 

我希望它说:

UPDATE dlbprog SET affId=323 WHERE id=1
UPDATE dlbprog SET affId=424 WHERE id=5

(它将最后的结果保留为当前结果)

这是我的表格:

<table border="1" width="90%" align="center" cellspacing="0" cellpadding="2">
 <tr>
  <td align="left" colspan="2">'.$row["description"].'</td>
 </tr>
 <tr>
  <td align="left" width="55%">
    To Sign Up <a href="'.$row["progUrl"].'" target="_blank">Click Here</a>
    <br />
    <input type="checkbox" name="blocked" value="'.$row['ownerId'].'"  />
    &nbsp;Block this program
  </td>
  <td align="left" width="45%">
   Your Affiliate Id: &nbsp; 
   <input type="text" class="input" size="30" name="affid[]" value="'.$row['affId'].'">
   <input name="postid" value="'.$row["id"].'">
  </td>
 </tr>
</table>
<p>&nbsp;</p>

2 个答案:

答案 0 :(得分:4)

$_POST['postid']是已过帐的值。这个值在你的循环中不会改变,所以很明显它在每次迭代中都是相同的。

答案 1 :(得分:0)

更改

<input name="postid" value="'.$row["id"].'">

<input name="postid[]" value="'.$row["id"].'">

将PHP更改为

foreach($i = 0; $i < count($affid); $i++) {
  $id = @mysql_real_escape_string(strip_tags($affid[$i]));
  $otherid = @mysql_real_escape_string(strip_tags($postid[$i]));

  $sql = "UPDATE dlbprog SET affId=".$id." WHERE id=".$otherid;

  echo $sql;

  //@mysql_query($sql) or die(mysql_error());
}