【问题标题】:Mysql wrongly update the dynamic row records [duplicate]Mysql错误地更新动态行记录[重复]
【发布时间】:2023-03-14 07:36:01
【问题描述】:

我试图在这里更新我的动态行值。当我插入新的凭证记录时,它可以将值正确插入数据库。当我当时编辑记录值时,它也会正确地从数据库中获取值。但更新是我的问题。它总是更新所有行中的最后一行值..

之前我在这里发布了另一个与此问题相关的问题,但仍未清除此错误。 Here is the link for another same question

更新页面PHP编码:

if(isset($_POST['submit_val']))
    {
    $uid = (int)$_POST["edited"];
    foreach( $_POST['slno'] as $key=>$slno ) 
    {
        $e_date = $_POST['date'][$key];
        $e_particulars = $_POST['particulars'][$key];
        $e_noofnights = $_POST['noofnights'][$key];
        $e_rate = $_POST['rate'][$key];
        $e_price = $_POST['price'][$key];
        $e_tax = $_POST['tax'][$key];
        $e_nettotal = $_POST['nettotal'];
        $e_totalamount = $_POST['totalamount'];
        $e_finaltotal = $_POST['finaltotal'];

        $e_slno = mysql_real_escape_string($e_slno);
        $e_date = mysql_real_escape_string($e_date);
        $e_particualrs = mysql_real_escape_string($e_particulars);
        $e_noofnights = mysql_real_escape_string($e_noofnights);
        $e_rate = mysql_real_escape_string($e_rate);
        $e_price = mysql_real_escape_string($e_price);
        $e_tax = mysql_real_escape_string($e_tax);
        $e_nettotal = mysql_real_escape_string($e_nettotal);
        $e_totalamount = mysql_real_escape_string($e_totalamount);
        $e_finaltotal = mysql_real_escape_string($e_finaltotal);
        $e_tariff = mysql_query("UPDATE ebvouchertariffs SET TariffSlNo = '$e_slno', TariffDate = '$e_date', TariffParticulars = '$e_particulars', NoOfNights = '$e_noofnights', TariffRate = '$e_rate', TariffPrice = '$e_price', TariffTax = '$e_tax', TariffNetTotal = '$e_nettotal', TariffAddTotal = '$e_totalamount', TariffFinalTotal = '$e_finaltotal', ModifiedOn = NOW() WHERE VoucherID_Fk = '$uid'");
    }
mysql_close($link);
    }

我在这里附上了几张图片..

更新前:

更新后

你可以在这里看到上面的图片。当我更新一行时,它总是更新所有行中的最后一行值。我在哪里犯了错误?

【问题讨论】:

    标签: javascript php mysql foreach


    【解决方案1】:

    因为你的 where 条件不对,

    看看

    $e_tariff = mysql_query("UPDATE ebvouchertariffs SET TariffSlNo = '$e_slno', TariffDate = '$e_date', TariffParticulars = '$e_particulars', NoOfNights = '$e_noofnights', TariffRate = '$e_rate', TariffPrice = '$e_price', TariffTax = '$e_tax', TariffNetTotal = '$e_nettotal', TariffAddTotal = '$e_totalamount', TariffFinalTotal = '$e_finaltotal', ModifiedOn = NOW() WHERE VoucherID_Fk = '$uid'");

    $uid 指向错误的键,该键应该来自 foreach 内部

    【讨论】:

    • 不,它不工作。同样的结果..
    【解决方案2】:

    我不太确定。但是,尽管我遇到了 php,但我从未见过多维关联数组的“键”在显示数组中的数据时被用作第二个索引参数!!!我无法发表评论,所以我将其发布为答案...对不起。 :)

    【讨论】:

    • 我正在使用 javascript 生成动态行。我想编辑我以前的凭证值。有时用户可以在添加另外几行时编辑这些值。所以只有我使用此代码来更新记录。
    • 是的,我明白了!但只需检查用于显示数组值的语法是否正确。
    • 显示数组值的语法是绝对正确的。我确定。上面我附上了一张图片更新前。你可以看到那里有一些三个不同的行值。该值也正确显示数组中的值。如果我一旦更新,它将更改每行中的最后一行值。我发布了另一个问题stackoverflow.com/questions/20628000/… 请参阅此链接。你可以在给定的链接中看到我的editpage php 编码...
    • 您可能已经尝试过了,但是.. 在 foreach 循环结束后放入更新代码!!!!看看它是否有效...
    猜你喜欢
    • 2013-07-18
    • 1970-01-01
    • 2015-04-10
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多