所以我在下面有这个代码,点击提交按钮,通过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;] =登录用户的用户名
提前感谢任何建设性的帮助。
答案 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