PHP MySQL - 使用$ _POST进行更新

时间:2015-11-12 07:54:25

标签: php mysql

简短说明我想做什么..当我点击我的按钮" calc1"我输入的数字(数量1)应该减少输入数字I输入(amount1)类似"结果= 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有一些很好的修正,你可以看到她的帖子...而且这个问题是因为在我的输入中,值是一个字符串写的,这就是计算的原因也没用。感谢@arkascha!

1 个答案:

答案 0 :(得分:3)

这里有一些小问题:

  1. 您不应直接在查询中指定$_POST['quantity1'],因为您希望将其作为参数提交。所以改为放置占位符::quantity1
  2. 您已经拥有id列的占位符了,太棒了!但是你忘了在执行execute()!
  3. 的调用中为它提供一个值
  4. 你不应该覆盖$_POST['quantity1'],尽管从技术角度来看肯定是可能的。超全局$_POST应被视为只读数据源,而是使用局部变量。这使代码更容易遵循。
  5. 所以试试这个:

    <?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!';
    }
    

    你显然仍需要在这里做一点调整,但我希望应该解决一般问题。