简短地解释一下我想做什么。.单击“ 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/