简短地解释一下我想做什么。.单击“ 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做了一些不错的更正,您可以看一下她的帖子... secound问题是因为在我的输入值中写入了一个字符串,这就是为什么计算也无法正常工作的原因。感谢@arkascha!

最佳答案

这里有一些小问题:


您不应直接在查询中指定$_POST['quantity1'],因为您希望将其作为参数进行传递。因此,请放一个占位符::quantity1
您已经在id列中使用了占位符,太好了!但是您忘了在您对execute()的调用中为此提供值!
您不应该覆盖$_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!';
}


您显然仍然需要在这里进行一些调整,但是我希望应该解决一般性问题。

关于php - PHP MySQL-使用$ _POST更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33666608/

10-10 11:13