我想更新数据库中的一些条目,基本上我正在计算在上一页上选中的复选框的数量,并将它们乘以25,然后将该值添加到数据库中的当前值。
这是我的代码:
<?php
if($_POST['code_approve'])
{
for($i=0;$i<count($_POST['checkbox']);$i++)
{
$approval_id = $checkbox[$i];
$checkboxCount = count($_POST['checkbox']);
$countx25 = $checkboxCount * 25;
$sql = "UPDATE table SET status='approved', used='processed' WHERE id='$approval_id'";
$sql2 = "UPDATE members SET balance = balance+'$countx25'";
$result2 = mysql_query($sql2);
$result = mysql_query($sql);
}
if($result)
{
echo "$countx25";
}
}
?>
看来,由于某种原因,在将其插入MySQL之前,它会将$ countx25与复选框的数量相乘。这if($result){echo "$countx25";}}
总是向我展示正确的价值。
如果我选择1它打印25,2打印50,3打印75等等,但对于MySQL部分,如果我选择1它将25加到当前值,2加100,3加225?!
这里的错误是什么?
答案 0 :(得分:3)
在您的SQL查询中:
$sql2 = "UPDATE members SET balance = balance+'$countx25'";
您没有告诉数据库要更新哪一行,因此所有行都会更新。在测试时,您首先测试一次,然后一次又一次测试,因此它可能会添加到您不期望的字段中。可能这是你的问题。
要指定要更新的行,请使用WHERE
clauseDocs。
要防止多次更新同一字段,请仅执行一次查询。
答案 1 :(得分:1)
正如我在评论中所述。您正在为通过$ _POST获得的每个复选框运行此操作。如果使用count
计算复选框,为什么甚至使用for循环。删除for循环,它将按照您的意图运行。
答案 2 :(得分:1)
代码中的for循环是问题所在。我想在这里你试图使用上一页中的所有复选框,为你的代码循环所有复选框,所以如果有4个复选框,for循环将运行4次。所以请确定你想要做什么。
这是你的代码。
<?php
if($_POST['code_approve'])
{
for($i=0;$i<count($_POST['checkbox']);$i++)
{
$approval_id = $checkbox[$i];
$checkboxCount = count($_POST['checkbox']);
$countx25 = $checkboxCount * 25;
$sql = "UPDATE table SET status='approved', used='processed' WHERE id='$approval_id'";
$sql2 = "UPDATE members SET balance = balance+'$countx25'";
$result2 = mysql_query($sql2);
$result = mysql_query($sql);
}
if($result)
{
echo "$countx25";
}
}
&GT;