【问题标题】:How to increment value in mysql database column from user defined value using PHP?如何使用 PHP 从用户定义的值增加 mysql 数据库列中的值?
【发布时间】:2019-07-08 08:10:08
【问题描述】:

我有一个数据库表“mtoken”,其中有一个列“sbonus”,如果我向该表添加任何新行意味着“sbonus”的初始值设置为“0”。我将通过用户定义的输入框为“sbonus”赋值,无论如何,“sbonus”的值不应超过 5000。

我的要求是在“Sbonus”+“输入框中的用户定义值”中添加值,然后检查该值是否小于 5000 的条件,如果小于,则将添加的最终值更新为“sbonus” .如果不返回“超出值”

最初,给定的值加上 0 并将 db 设置为给定的值。现在,如果我向“mtoken”添加新行,则现有行在“sbonus”列中有一些值(“100”),“sbonus”列的值为“0”。

现在我从用户定义的输入框中给出一个值“200”。应该是这样的, 现有行红利值 100+200 = 300

新行红利值, 0+200 = 200

当我使用下面的代码时,所有行的“sbonus”值都设置为 200。请找到下面的代码,请帮我解决它。

用户定义的输入值给出为200的意思,

现有行 Sbonus 值为 100

新行 Sbonus 值为 0

检查条件输出值应该小于5000。

我需要输出为

现有的“sbonus”行应该是这样的,

100 + 200 = 300

新行“Sbonus”值应该是这样的,

0+200 = 200

 <div class="row">
                <div class="col-lg-4">
                    <form method="post" action="add_sbonus.php">    
                        <div class="form-group">
                            <label>Surprise Bonus Per Token</label>
                            <input type="number" name="sbonus" class="form-control" required>
                        </div>
                        <div class="form-group">
                            <input type="submit" name="s_bonus" class="btn btn-primary" value="SurpriseBonus">
                        </div>
                    </form>
                </div>
            </div>

<?php
    if(isset($_POST['s_bonus'])){
        $sbonus = mysqli_real_escape_string($con,$_POST['sbonus']);
            if($sbonus!=''){
                $query = mysqli_query($con, "select sbonus from mtoken where status='Selled'");
                while($row=mysqli_fetch_array($query)){
                $dbonus = $row['sbonus'];
                $nbonus = $dbonus + $sbonus;
                    if($nbonus<=5000){
                        $sqlupdate = mysqli_query($con,"update mtoken set sbonus='$nbonus' where status='Selled'");
                            if(!$sqlupdate) {
                                echo mysqli_error($con);
                                echo '  <script>
                                            alert("Bonus NOT Updated");
                                        </script>';
                                }
                    }
                    if($nbonus>5000){
                     echo '<script>
                                alert("Value Exceeded");
                                window.location.assign("sbonus.php");
                            </script>';
                    }
                }   
            }else{
                    echo '<script>
                                alert("Please fill all the fields");
                            </script>';
                }

        echo '<script>
                alert("Surprise Bonus Added To Tokens");
                window.location.assign("sbonus.php");
            </script>';
    }
    ?>

DB-with-Initial Value

DB-with-User-Defined + Initial Value

Existing Rows and New Added Rows

Error-Both existing row and new row showing same value

【问题讨论】:

  • 不要把你的代码作为图片的链接。把你的代码作为纯文本
  • @nacho 我已将代码粘贴到纯文本中。请帮忙解决。
  • @NJInamdar 我已将代码粘贴为纯文本。请帮忙解决。
  • 你又做了一次,不要放图片链接

标签: php mysql loops


【解决方案1】:

where status='Selled' 将更新在状态列中具有该值的 所有 行。所以每次你运行它都会更新所有的行。您最终得到的结果取决于您的 SELECT 语句中最后返回的行。

如果您想更新特定单行,那么您需要在where 子句中添加一些内容来标识该确切行。 id 是显而易见的,因为它是独一无二的。

为此,您需要更改两条查询行:

mysqli_query($con, "select id, sbonus from mtoken where status='Selled'");

mysqli_query($con,"update mtoken set sbonus='$nbonus' where id = $row['id']");

注意语言方面的说明:在英语中,“selled”不是一个词。 “sell”有一个非标准的过去时版本,即“sold”。所以如果你想用英文写你的状态,你应该写“sold”而不是“selled”。见here

【讨论】:

  • 感谢您通过简单的更改为我工作。
【解决方案2】:

语法错误

mysqli_query($con,"update mtoken set sbonus='$nbonus' where id = $row['id']");

所做的更改

$rid = $row['id'];

mysqli_query($con,"update mtoken set sbonus='$nbonus' where id = '$rid'");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2012-04-09
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多