javascript - 更新行而不是添加新行
问题描述
我的问题是我想更新该行但是当我编辑该行时,它会添加新行并且一些数据不会检索回数据库。有人知道我错过了什么吗?我应该添加一些循环吗?我正在使用按钮提交,并且在按钮提交中我只想要同一行的功能editGroup(更新)。这意味着,用户可以编辑行并单击按钮提交和更新行。
PHP 更新
function editGroup(){
global $ehorsObj;
$employeeID = $_SESSION['employeeID'];
$propertyID = $_SESSION['propertyID'];
$accountID = (isset($_POST['accountID']) ? $_POST['accountID'] : '');
$accountLedgerID = (isset($_POST['accountLedgerID']) ? $_POST['accountLedgerID'] : '');
$accountNo = (isset($_POST['accountNo']) ? $_POST['accountNo'] : '');
$accountName = (isset($_POST['accountName']) ? $_POST['accountName'] : '');
//$accountMain = (isset($_POST['accountMain']) ? $_POST['accountMain'] : '');
$openingBalance = (isset($_POST['openingBalance']) ? $_POST['openingBalance'] : '');
$openingBalanceDate = (isset($_POST['openingBalanceDate']) ? $_POST['openingBalanceDate'] : '');
$selectable = (isset($_POST['selectable']) ? $_POST['selectable'] : '');
$popUp = (isset($_POST['popUp']) ? $_POST['popUp'] : '');
$accountChar = (isset($_POST['accountChar']) ? $_POST['accountChar'] : '');
$active = (isset($_POST['active']) ? $_POST['active'] : '');
$sqlCount = "SELECT COUNT(*) AS TOTAL FROM tblAccAccounts
WHERE accountID = '" . $accountID . "'";
$GetResult = $ehorsObj->FetchData($sqlCount, $ehorsObj->DEFAULT_PDO_CONNECTIONS);
while ($row = $GetResult->fetch()){
$total = $row ['TOTAL'];
}
if ($total > 0) // table returned some rows
{
$sqlUpdate= "UPDATE tblAccAccounts
SET accountLedgerID = '" . $accountLedgerID . "',
accountNo = '" . $accountNo . "',
accountName = '" . $accountName . "',
openingBalance = '" . $openingBalance . "',
openingBalanceDate = '" . $openingBalanceDate . "',
selectable = '" . $selectable . "',
popUp = '" . $popUp . "',
accountChar = '" . $accountChar . "',
active = '" . $active . "'
WHERE accountID = '".$accountID."'";
$ehorsObj->ExecuteData($sqlUpdate, $ehorsObj->DEFAULT_PDO_CONNECTIONS);
}
else
{ // no such row exists.
$sqlInsert= "INSERT INTO tblAccAccounts
SET accountID = '" . $accountID . "',
accountLedgerID = '" . $accountLedgerID . "',
accountNo = '" . $accountNo . "',
accountName = '" . $accountName . "',
openingBalance = '" . $openingBalance . "',
openingBalanceDate = '" . $openingBalanceDate . "',
selectable = '" . $selectable . "',
popUp = '" . $popUp . "',
accountChar = '" . $accountChar . "',
active = 'y',
employeeID = '" . $employeeID . "',
propertyID = '" . $propertyID . "',
dateTimeEmployee = NOW() ";
$ehorsObj->ExecuteData($sqlInsert, $ehorsObj->DEFAULT_PDO_CONNECTIONS);
}}
JavaScript
//AJAX call for button
$("#btnSave").kendoButton();
var button = $("#btnSave").data("kendoButton");
button.bind("click", function(e) {
//var test = $("#accountLedger").data("kendoDropDownList").value();
var accountLedgerID = $("#accountLedger").data("kendoDropDownList").value();
var accountID = $("#accountID").val();
var accountName = $('#accountName').val();
var accountNo = $("#accountNo").val();
var openingBalance = $('#openingBalance').val();
var openingBalanceDate = $('#openingBalanceDate').val();
//var selectable = $("input[name=selectable]:checked").val();
var selectable = $('#selectable').val();
var popUp = $('#popUp').val();
//var popUp = $("input[name=popUp]:checked").val();
var accountChar = $("#accountChar").val();
$.ajax({
url: "../DesignationProgramTemplate/getCoaGroup.php",
type: "POST",
data: {
method: "editGroup",
accountID: accountID,
accountLedgerID: accountLedgerID,
accountName: accountName,
accountNo: accountNo,
openingBalance: openingBalance,
openingBalanceDate: openingBalanceDate,
selectable: selectable,
popUp: popUp,
accountChar: accountChar
},
success: function(){
KendoAlert("Data updated");
}
});
});
有人对此有意见吗?
解决方案
要只更新表的行,您只需要执行UPDATE
查询即可,之后无需使用INSERT
。
这意味着不需要使用这部分代码
accountID= $ehorsObj->EHORS_PK(tblAccAccounts);
$sqlAdd = "INSERT INTO tblAccAccounts
SET accountID = '" . $accountID . "',
accountLedgerID = '" . $accountLedgerID . "',
accountNo = '" . $accountNo . "',
accountName = '" . $accountName . "',
openingBalance = '" . $openingBalance . "',
openingBalanceDate = '" . $openingBalanceDate . "',
selectable = '" . $selectable . "',
popUp = '" . $popUp . "',
accountChar = '" . $accountChar . "',
active = 'y',
employeeID = '" . $employeeID . "',
propertyID = '" . $propertyID . "',
dateTimeEmployee = NOW() ";
$ehorsObj->ExecuteData($sqlAdd, $ehorsObj->DEFAULT_PDO_CONNECTIONS); }
此外,如果您想要(您应该是)INSERT
一个新行,如果表中没有现有行,您应该仅在对 table 执行检查后才这样做。
例如 :
$sql=mysqli_query($conn, "SELECT * FROM tblAccAccounts WHERE AccountID = $accountID");
if (mysqli_num_rows($sql) > 0) // table returned some rows
{
$sqlUpdate= <YOUR UPDATE COMMAND HERE>;
mysqli_query($conn,$sqlUpdate);
}
else { // no such row exists.
$sqlInsert=<YOUR INSERT COMMAND HERE>;
mysqli_query($conn,$sqlInsert);
}
推荐阅读
- mysql - SQL查询:单行有来自另一个表的多个外键
- node.js - 在 react.js 中选择 id 时,文本框被填充
- javascript - 在 HTML 页面上使用 Golang 进行实时搜索
- r - R 用户定义的函数保存图形 - dev.off() 出错?
- c - 使用外部变量与不使用外部变量的区别
- css - 热门在选中的角度材质 md-tab 中放一个背景色
- c# - 执行 GET 请求时出现 Angular 5 Web API 2 CORS 错误
- java - Fragment 和 Activity 之间的通信
- php - 我无法成功让我的输入文本只接受来自特定网站的链接
- sql - 非聚集(非 PK)索引是否需要包含聚集(PK)列?