PHP的输入值改变和更新数据库

时间:2019-02-23 14:34:40

标签: php html database mysqli

“注释”字段是可更新的,您应将其突出显示为黄色。所有其他列都是不可更新的字段。 注意已更新,我应该更新 注意数据库表中相应记录的列。一条消息“代码xxxx的注释包含 数据库中已更新。”应该为每个更新的记录显示。

这是我的表格注释代码

while($tablerow=mysqli_fetch_array($tableresult)){
        $amt=$tablerow['amount'];
        if($amt>'0'){
        $aColor='style="color:blue;"';
        }else{
        $aColor='style="color:red;"';
        }

        $operation="";
        if($tablerow['type']=='W'){
        $operation="Withdraw";
        }
        if($tablerow['type']=='D'){
        $operation="Deposit";
        }

        $source="";
        if($tablerow['sid']==1){
            $source="ATM";
        }else if($tablerow['sid']==2){
            $source="Online";
        }else if($tablerow['sid']==3){
            $source="Branch";
        }else{$source="Wired";
            }
        echo"
    <tr><td align='center'><input type='hidden' name='mid[".$i."]' value='".$tablerow['mid']."'>".$tablerow['mid']."</td>
        <td align='center'><input type='hidden' name='code[".$i."]' value='".$tablerow['code']."'>".$tablerow['code']."</td>
        <td align='center'".$aColor."><input type='hidden' name='amount[".$i."]' value='".$amt."'>".$amt."</td>
        <td align='center'><input type='hidden' name='type[".$i."]' value='".$operation."'>".$operation."</td>
        <td align='center'><input type='hidden' name='source[".$i."]' value='".$source."'>".$source."</td>
        <td align='center'><input type='hidden' name='date[".$i."]' value='".$tablerow['mydatetime']."'>".$tablerow['mydatetime']."</td>
        <td align='center' bgcolor='yellow'><input type='text' name='note[".$i."]' style='background-color:yellow' value='".$tablerow['note']."'></td>
        <td align='center'><input type='checkbox' name='delete[".$i."]' value='Y'></td></tr>\n";
        $i++;
    }

    echo "Total balance: $".$totalrow['total']."<br>";

    echo"<input type='submit' value='Update transaction'></form>";
    echo "</table>\n";

    echo "Total balance: $".$totalrow['total']."<br>";

    echo"<input type='submit' value='Update transaction'></form>";

这是我苦苦挣扎的代码

for($i=0; $i<$tablerow; $i++){
    if(isset($_POST['note'][$i])){
        $note=$_POST['note'][$i];
        $mid=$_POST['mid'][$i];
        mysqli_query($con,"UPDATE Money set note='$note' where mid='$mid' and note!='$note';");
        echo"Successfully update transaction code: UPDATE Money_kimeunb set note='".$note."' where id=".$mid." and note !='".$note."'<br>";
    }

但是由于我在note输入中已经有值,所以它不仅在我要更新的地方更新表的所有值。

1 个答案:

答案 0 :(得分:0)

您的查询似乎正在更新“注释”内容与发布的“注释”不相等的所有注释。

我注意到您传递了一个包含您的帖子数据的代码,我假设这是您数据库中的一列,也与此特定注释相关联。如果这是一个唯一值。你可以改变

mysqli_query($con,"UPDATE Money set note='$note' where mid='$mid' and note!='$note';");

mysqli_query($con,"UPDATE Money set note='$note' where mid='$mid' and code ='$code';");

您当然需要定义$ code

这当然是假设代码在这里是唯一的吗?否则,最简单的方法就是使用唯一的索引,例如行ID。

在这种情况下,您可以写:

mysql_query($con,"UPDATE Money set note='$note' where id='$id';");

显然,您再次需要在此处定义$ id。

但是请注意,当使用隐藏形式的索引值作为索引时,很容易有人将数据放入不属于该用户的帖子中,因此您总是需要某种验证确保拥有所有权,然后再考虑进行更新。