2012-10-19 61 views
0

我使用這個:我期待不同的SQL結果

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> 
+0

的'mysql'庫已過時。如果您有時間,請調查'mysqli'&'PDO'連接到MySQL數據庫。 –

回答

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()); 
} 
+0

它以數組而不是1或5返回 –

+0

擴展答案。 –

+0

Foreach返回語法錯誤,我沒有看到它。 –

4

$_POST['postid']是張貼值。這個值在你的循環中不會改變,所以顯然它在每次迭代中都是一樣的。

+0

Ah ... $ _POST ['postid']用於獲取每個程序的「postid」的值。那麼我該如何解決這個問題? –

+0

哦PS:所發佈的值多次出現(它屬於的部分在foreach語句中) –