PHP MySQL - 使用 $_POST 更新

PHP MySQL - Update with $_POST

简短说明我想做什么.. 当我点击我的按钮时 "calc1" 我输入的数字 (quantity1) 应该减去我输入的输入数字 (amount1) 就像 " Result = quantity1 - amount1 ”。在输入中 "quantity1" 已经是一个值,因为我将它从我的数据库加载到输入中但计算不起作用。我希望你能理解我一点..我现在最好展示我的代码..

计算代码:

<?php
 include_once('connect.php');

 if($_POST['calc1']){
 $_POST['quantity1'] = $_POST['quantity1'] - $_POST['amount1'];

 $sql = "UPDATE
        tbl_auction
      SET
        quantity1      = $_POST['quantity1']
      WHERE
        id = :user_id";

 $query = $conn->prepare($sql);
 $query ->execute(array('quantity1' => $_POST['quantity1'] ));
 } else{
 echo 'ups, error!';
 }
?>

HTML代码:

<div id="move_amount">
  <input type="text" class="amount" name="amount1">
</div>

<div id="move_quantity">
<input type="text" class="tend_quantity" name="quantity1" value=" <?=$value_quantity1 ?>"  > 
</div>

<div id="move_btn">
  <input class="btn_sel" name="calc1" type="submit" name="submitted" value="Bidding">
</div>

这是我要更新的数据库部分

id  AUTO_INCREMENT
quantity1   int(11)

非常感谢您的帮助!

编辑:我的 user_id 声明:

if ($result[0]["password"] !==    md5($_POST['password'].'D6tp'.$_POST['email'])) {
 header('Location: /PHP/index.php?page=login');
} else {
   $_SESSION['loged_in'] = true;
   $_SESSION['user_id']  = $result[0]["id"]; 
   header('Location: /PHP');

};

编辑:问题已解决!对于那些想知道问题出在哪里的人:所以首先@arkascha 进行了一些很好的更正,您可以看到她 post... 第二个问题是因为在我的输入值中写入了一个字符串,这就是计算的原因也没有用。感谢@arkascha!

这里有一些小问题:

  1. 您不应在查询中直接指定 $_POST['quantity1'],因为您想将其作为参数传递。因此,改为放入一个占位符::quantity1
  2. 您已经为 id 列设置了占位符,太棒了!但是您忘记在调用 execute()!
  3. 时为其提供一个值
  4. 您不应该覆盖 $_POST['quantity1'],尽管从技术角度来看这当然是可能的。超全局 $_POST 应被视为只读数据源,请改用局部变量。这使得代码更容易理解。

所以试试这个:

<?php 
include_once('connect.php');

if($_POST['calc1']) {
    $quantity1 = $_POST['quantity1'] - $_POST['amount1'];

    $sql = 'UPDATE tbl_auction SET quantity1 = :quantity1 WHERE id = :user_id';

    $query = $conn->prepare($sql);
    $query ->execute(array(
        'user_id' => $some_user_id, // this has to be some user id
        'quantity1' => $quantity1
    ));
} else{
    echo 'ups, error!';
}

你显然还需要在这里稍微适应一下,但我希望一般问题应该得到解决。