根据表单输入更新数据库
Posted
技术标签:
【中文标题】根据表单输入更新数据库【英文标题】:Update database based on form input 【发布时间】:2018-05-22 08:53:18 【问题描述】:我正在尝试根据表单的输入对数据库执行更新,但遇到了问题。我已经尝试了以下,但它没有在数据库上执行命令。它需要读入决策值并根据决策执行查询。有人可以在这里发现问题吗?
html表单代码:
<center><div class="container">
<form action="update.php" onsubmit="return confirm('Are you sure you wish to update ?');">
<div class="row">
<div class="col-25">
<label for="decision">Would you like to add or subtract from current quantity?</label>
</div>
<div class="col-75">
<select id="decision" name="decision">
<option value="add">Add</option>
<option value="subtract">Subtract</option>
</select>
</div>
</div>
<br>
<div class="row">
<div class="col-25">
<label for="License Group ID">License Group ID</label>
</div>
<div class="col-75">
<input type="number" name="LicenseGroupID" placeholder="LicenseGroupID">
</div>
</div>
<br>
<div class="row">
<div class="col-25">
<label for="Quantity">Quantity</label>
</div>
<div class="col-75">
<input type="number" name="Quantity" placeholder="Quantity">
</div>
</div>
<br>
<div class="row">
<input type="submit" value="Update">
</div>
更新.php
<html>
<?php
$serverName = "tcp:xxx,1433";
$options = array( "UID" => "aalicensemanager", "PWD" => "xxx", "Database" => "AALicenseManager");
$conn = sqlsrv_connect($serverName, $options);
if( $conn === false )
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
$decision = $_POST['decision'];
$LicenseGroupID = $_POST['LicenseGroupID'];
$Quantity = $_POST['Quantity'];
$query = " CASE WHEN $decision = 'add'
THEN
UPDATE dbo.[tbl_license_group]
SET Quantity = Quantity + '$Quantity'
WHERE License_Group_ID = '$LicenseGroupID'
ELSE WHEN $decision = 'subtract'
THEN
UPDATE dbo.[tbl_license_group]
SET Quantity = Quantity - '$Quantity'
WHERE License_Group_ID = '$LicenseGroupID'" ;
$params1 = array($decision,$LicenseGroupID,$Quantity);
$result = sqlsrv_query($conn,$query,$params1);
sqlsrv_close($conn);
?>
</html>
【问题讨论】:
您遇到什么错误? php 和 html 看起来不错,但您可能有许多可能需要隔离的问题。即服务器连接、sql 更新等,所以也许更多的错误日志记录会对您有所帮助? 表单处理但不影响数据库。我发现这个和其他类似的工作之间的显着区别是当表单重定向到 php 文件时,参数显示在 url 中? 【参考方案1】:您的更新语句应该类似于....
UPDATE dbo.[tbl_license_group]
SET Quantity = CASE
WHEN $decision = 'add' THEN Quantity + '$Quantity'
WHEN $decision = 'subtract' THEN Quantity - '$Quantity'
END
WHERE License_Group_ID = '$LicenseGroupID'
你需要将你的case语句放在你的更新语句中,而不是在你的case语句中的更新语句。
【讨论】:
以上是关于根据表单输入更新数据库的主要内容,如果未能解决你的问题,请参考以下文章