当我只希望它更新1时更新所有行

时间:2014-06-15 20:57:59

标签: php mysql

所以我在下面有这个代码,点击提交按钮,通过ID更新数据库中的行,代码更新数据库,但它会更新所有行。

我曾尝试在谷歌上寻找解决方案,但截至目前为止,我无法提出正确答案。

我想点击提交按钮只是为了在数据库中更新一行而不是所有行,但我到目前为止所尝试的所有内容都失败了。

继承我的代码:

<?php

$whoOwns = mysql_query("SELECT * FROM `sharesbought` WHERE `for_id` = '" . $getID . "'");
while($getWhoOwns = mysql_fetch_assoc($whoOwns)) {
    $aHowMany       = $getWhoOwns['how_many'];
    $aUsername      = $getWhoOwns['username'];
    $aPercentOwned  = $getWhoOwns['percent_owned'];
    $aPaid          = $getWhoOwns['paid'];
    $aID            = $getWhoOwns['id'];

    echo '
        <tbody>
            <tr>
                <td><center>'. $aUsername .'</center></td>
                <td><center>'. $aHowMany .'</center></td>
                <td><center>'. $aPercentOwned .'%</center></td>
                <td><center><a href="/percentofme/'.$aUsername.'">View Profile</a></center></td>';

    if (isset($_POST['mark_as_paid'])) {
        $updatePaid = mysql_query("UPDATE `sharesbought` SET `paid` = 'Yes' WHERE `id` = '". $aID ."'");

        if ($updatePaid) {
            header('Location: eventdisplay.php?id='. $existingID .'');
        }
    }

    if ($getUser == $user_data['username'] && $aPaid =='No') {
        echo '
        <td><center><form method="post" action=""><input type="hidden" value="'. $aID .'"><button class="btn-u" name="mark_as_paid">Mark Paid</button></form></center></td>
        </tr>
        </tbody>';
    } else {
        echo '<td><center>'. $aPaid .'</center></td></td></tbody>';
    }
} 
?>

变量 $ getUser =创建事件的人的用户名 $ user_data [&#39;用户名&#39;] =登录用户的用户名

提前感谢任何建设性的帮助。

1 个答案:

答案 0 :(得分:0)

你的where子句似乎没有足够的限制性。它仅限制对具有id = $ aId的行的更新,该行似乎与多个行相关联。如果您有关于支付的股份的信息,可以将其添加到您的where子句中。

$updatePaid = mysql_query("UPDATE sharesbought SET paid = 'Yes' WHERE id = '". $aID ."' AND share = '".$share."'");

这样它只会更新id和share匹配的行。

我还建议使用准备好的陈述PHP Prepared Statements