【问题标题】:How to add to an existing value in the database如何添加到数据库中的现有值
【发布时间】:2012-10-21 20:27:17
【问题描述】:

我带着另一个绝对初学者问题回来了,我将值存储在数据库中,我的目标是允许用户使用下拉菜单减去或添加到特定数据库值(数量),其值范围为1 - 10。我现在保持简单。

mysql_select_db("toner", $con);
$sql=INSERT INTO inventory (partnumber, quantity)
VALUES
('$_POST[partnumber]','$_POST[quantity]');
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
mysql_close($con);

我可以找到很多只是添加或删除静态值的示例,但这不是我需要的。我已经四处搜索了一些类似于我正在寻找的示例 12 似乎 UPDATE 将是最好的解决方案但是我不确定它应该如何实现,我也在寻找进入串联,但我不确定它能否完成我所需要的,感谢您为这个新手提供的任何帮助。谢谢

【问题讨论】:

  • 更新库存 SET 数量 = 12 WHERE partnumber = 42 ...
  • 我在示例 1 中看到 UPDATE table SET field = oldValue + X WHERE id = 1 但是我不知道如何实现这个或 1 在哪里发挥作用?在您的评论中,12 指的是什么?基本上这对我来说有点太模糊了。
  • 12 只是我从脑海中抽出的一个随机数。这是为了展示你如何实现更新
  • 如果您在数据库中只有一项,这将更新该一项。假设该表由“partnumber”索引(它是一个唯一的数字)...

标签: php mysql database sql-update insert-update


【解决方案1】:

要使以下解决方案正常工作,您需要在数据库中插入一个值,例如 partnumber = 1 和 qantity = 0。您肯定需要修改它以使用您的 mysql 连接字符串,并且需要查看之后检查数据库是否正常工作或添加选择查询。但是,这将使用下拉列表中选择的数量更新库存项目 1 的数量...

文件.php

<?php
    include("db_connection_file.php"); // in here are the username and password etc for your mysql connection
    if($_POST){ // the code in this block will ONLY fire if the form has been posted
        $dropdown_contents = $_POST['drop']; // this is the value of the form item 'drop' that has been posted...
        $part_no_from_form = $_POST['part_no'];
        $query ="UPDATE inventory SET quantity = '".$dropdown_contents."' WHERE partnumber = '".$part_no_from_form ."'"; // this updates the database and sets the quantity to that posted where the part number is that in the form
        $testResult = mysql_query($query) or die('Error, query failed'); 
        echo "This worked";
    }
?>
<form acion="file.php" method="post">
    Quantity <select name="drop" id="drop">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
    </select><br />
    Part No. <select name="part_no" id="part_no">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
    </select><br />
    <input type="submit" value="go" />
</form>

注意:这可以通过添加另一个下拉列表或输入框,捕获发布的值并将其传递给 Update 查询的 where 部分,轻松扩展以指定要在数据库中更新的部件号。

这没有任何验证!它也使用了贬值的 MySQL 连接函数,请查阅 MySQLi 和 PDO

【讨论】:

  • 别担心!如果您需要更多帮助,请在这里询问,我会尽力提供帮助。 $dropdown_contents = $_POST['drop'];。因此,当表单发布时,$dropdown_contents 会填充名为“drop”的表单项的值,在本例中是一个选择项。我将在一分钟内对代码进行更多评论,以帮助它更有意义。我猜你对 PHP 很陌生?
  • 啊——我也是自学的。目前正在尝试自学 ASP.NET C# 哈哈。 叹息。数据库中是否有“partnumber”值为“1”的行?清空数据库可能是值得的,除了那一行只是为了开始——这将使调试更容易。在这一行下: if($_POST){ ...你可以把 print_r($_POST);这将向您显示已从表单发布的所有值,并且在 $query ="UPDATE invento.. 行下您可以放置​​ print_r($query); 这将向您显示查询的内容,如果查询将显示您完成了
  • 啊,我想念你的问题。如果“零件编号”为“1”,我的解决方案将用下拉列表中的值替换“数量”的值。它不会添加或减去它,只是替换该值。加减法非常简单。正如马特克拉克在下面发布的那样,只需要决定是否要添加或减去并在当前更新查询中添加一点点。确保当前查询按原样工作是值得的。如果它回显“This Worked”,则查询没有错误。如果没有找到可以更新的记录,查询不会出错,只有在查询格式错误时才会出错
  • 不用担心。让我知道你是否被卡住了
  • 我正在尝试在其中工作,但我看到您的更新给了我另一个下拉列表,我试图使用值 1 -10 的相同下拉列表并有另一个显示每个部分的下拉列表,所以我只尝试使用两个下拉菜单,但我再次感谢您抽出时间和精力来帮助我!!!
【解决方案2】:

将行更新为新的 KNOWN 值:

UPDATE inventory SET quantity = $KnownValue WHERE partnumber = $PartNumber;

要更新添加到现有值的行,即向库存添加额外的 5 个单位:

UPDATE inventory SET quantity = quantity + $IncramentalValue WHERE partnumber = $PartNumber;

【讨论】:

  • 如果你不使用partnumber,它会将表格中的每一行更新为新的数量,假设你有500个项目,它将所有500个项目的数量更改为新的设置数量。您需要告诉它您将更新哪个项目的数量,并且 partnumber 是唯一提到的用于区分零件的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多