【问题标题】:PHP variables entered as 0 in MySQL database在 MySQL 数据库中输入为 0 的 PHP 变量
【发布时间】:2014-04-20 12:22:28
【问题描述】:

我对 php 和 mysql 比较陌生。我在这部分代码中尝试做的是根据 2 个文本框的输入更新数据库中的 2 列信息。每当我尝试更新数据库中的值时,它们都会更新为 0。我在声明 $ 变量后放置了 echo 语句,这两个变量的值与我在框中输入的值相同。但是当我运行 sql_query 时,数据库中的新值是 0 而不是 2 $ 变量的值。任何帮助将非常感激!提前致谢!

<?php

    $result = mysql_query("SELECT * from place_order ORDER BY item_name;");

    echo "<form action='' method='POST'>Select an item:<select name='selection'><option>Select...</option>";

    while ($row = mysql_fetch_assoc($result)) 
        {
            $item_name = $row["item_name"];

            echo "<option>$item_name</option>";

        }

    echo "</select>
    <input type='submit' value='Select Item' style='float:right;'/>";

    $selection = $_POST['selection'];

    echo "<br><br>Type the updated information into the text fields<br><br>";
    echo "
    <table width='300'>
    <tr>
        <td align='left'>Item Cost(&#8364;): </td>
        <td align='left'><input type='text' name='cost'></td>
    </tr>
    <tr>
        <td align='left'>Item Quantity: </td>
        <td align='left'><input type='text' name='quantity'></td>
    </tr>
    <tr>
        <td align='left'></td>
        <td align='left'><input type='submit' name='button' value='Submit'></td>
    </tr>   
    </table>
    ";

    $cost = $_POST['cost'];
    $quantity = $_POST['quantity'];
    $selection = $_POST['selection'];

    $sql = "UPDATE place_order SET item_cost='$cost', quantity='$quantity' WHERE item_name='$selection' ORDER BY item_name;;";

    $query_update = mysql_query($sql);

    if($query_update)
    {
        echo "Table updated! Click View Stock in the menu to view the updated table";
    }

    echo"</form>";
?>

【问题讨论】:

  • 简单:$select 未定义。
  • 列上的datatype 是什么? $_POST 元素的值是什么?
  • 您的代码容易受到SQL injection的攻击
  • @fred-ii- 这是我定义 $select 的 php 脚本的开始: $result = mysql_query("SELECT * from place_order;"); echo "
    选择一个项目:
    "; $select = $_POST['select'];
  • @edvinas.me item_cost 的数据类型是小数(6,2),数量列是整数。 $_POST 元素的值取决于文本框中的内容。提交信息时,两个值正常回显,但当输入数据库时​​,由于某种原因,它们变为 0

标签: php mysql variables zero


【解决方案1】:

这个脚本有两种形式:

  1. 一个带有选择框的
  2. 另一个带有输入框的

这些表格中的每一个都是单独发布的。

让我们有一些状态转换表:

  1. 最初是第一次显示表单,所有值都为空 或默认。
  2. 您选择一个项目名称并提交第一个表单。
  3. 选项列表已发布,$_POST['select'] 有一个值,然后 以第二种形式正确填充
  4. 脚本运行到最后并立即插入一个空行到 具有所选项目名称的数据库
  5. 您在第二个表单中输入并提交
  6. 这有两个输入变量:发布的成本和数量
  7. 由于选项列表是另一种形式,它会 未发布且$select 在该状态下为空
  8. 更新语句将运行但没有结果,因为没有 数据库中的空 item_name - 无用更新。

简单的解决方案:只制作一个表格就完成了(除了完全缺失的错误处理......)

第二种解决方案:如果only设置了$_POST['select'],则将$select的值放在隐藏字段中,并在回显第二种形式后退出脚本。

【讨论】:

  • 感谢您的意见!我编辑了我的脚本,以便所有变量都包含在一个表单中,但没有任何改变
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-26
  • 2015-12-02
相关资源
最近更新 更多