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!
这里有一些小问题:
- 您不应在查询中直接指定
$_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!';
}
你显然还需要在这里稍微适应一下,但我希望一般问题应该得到解决。
简短说明我想做什么.. 当我点击我的按钮时 "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!
这里有一些小问题:
- 您不应在查询中直接指定
$_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!';
}
你显然还需要在这里稍微适应一下,但我希望一般问题应该得到解决。