Javascript 在HTML表中添加行时,ID为NULL且不自动递增
我有一个包含7列的HTML表,其中有一个insert按钮。无论何时按下“插入”按钮,都会出现一个对话框,您可以输入信息。在添加行时,我希望它自动将MR_ID列分配给MAX MR_ID为+1的任何值。例如,如果max MR_ID为300,我添加了一行,我希望添加行的MR_ID为301,基本上类似于自动递增。目前,每当我添加一行时,MR_ID在表中显示为0,在数据库中为NULL。MR_ID是其他表的查找,因此我不能将其设置为NULL或与另一行相同的数字。我该怎么做 我知道这是很多代码,但如果您有任何问题,我会在这里帮助您使我的代码更清晰,如果可以的话 表格的HTML/PHP:Javascript 在HTML表中添加行时,ID为NULL且不自动递增,javascript,php,html,sql-server,Javascript,Php,Html,Sql Server,我有一个包含7列的HTML表,其中有一个insert按钮。无论何时按下“插入”按钮,都会出现一个对话框,您可以输入信息。在添加行时,我希望它自动将MR_ID列分配给MAX MR_ID为+1的任何值。例如,如果max MR_ID为300,我添加了一行,我希望添加行的MR_ID为301,基本上类似于自动递增。目前,每当我添加一行时,MR_ID在表中显示为0,在数据库中为NULL。MR_ID是其他表的查找,因此我不能将其设置为NULL或与另一行相同的数字。我该怎么做 我知道这是很多代码,但如果您有任何
<?php
/* Foreach loop that brings in information to populate table */
foreach ($dbh->query($sql) as $rows){
?>
<tr id="<?php echo intval ($rows['MR_ID'])?>">
<td class="mr_id" id="<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo intval ($rows['MR_ID'])?></td>
<td class="mr_name" id="mr_name-<?php echo intval ($rows['MR_ID'])?>" name="field" contenteditable="false"><?php echo $rows['MR_Name']?></td>
<td class="buyer_id" id="buy_id<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['Buyer_ID']?></td>
<td class="poc_n" id="poc_n-<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['MR_POC_N']?></td>
<td class="poc_e" id="poc_e-<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['MR_POC_E']?></td>
<td class="poc_p" id="poc_p-<?php echo intval ($rows['MR_ID'])?>" contenteditable="false"><?php echo $rows['MR_POC_P']?></td>
<td><input type="button" class="edit" name="edit" value="Edit">
</tr>
<?php
}
?>
Ajax插入脚本:
<?php
$MR_ID = $_POST['MR_ID'];
$MR_Name = $_POST['MR_Name'];
$Buyer_ID = $_POST['Buyer_ID'];
$MR_POC_N = $_POST['MR_POC_N'];
$MR_POC_E = $_POST['MR_POC_E'];
$MR_POC_P = $_POST['MR_POC_P'];
$host="xxxxxxxxxx";
$dbName="xxxxxx";
$dbUser="xxxxxxxxxxxxx";
$dbPass="xxxxxxxxxx";
$pdo = new PDO("sqlsrv:server=".$host.";Database=".$dbName, $dbUser, $dbPass);
$sql = "INSERT INTO Stage_Rebate_Master (MR_ID, MR_Name, Buyer_ID, MR_POC_N, MR_POC_E, MR_POC_P) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute(array($MR_ID, $MR_Name, $Buyer_ID, $MR_POC_N, $MR_POC_E, $MR_POC_P));
echo json_encode($result);
?>
SQL Server将其auto_increment
列调用为identity
列auto_increment
是MYSQL的一个特性,它不是其他数据库的标准特性,尽管大多数其他数据库都有类似的特性。您需要在ManagementStudio中将该列设置为identity
列(或其他工具或alter语句)。是的,谢谢。我把术语弄混了。我想我不能用MR_ID作为身份栏。表中创建了另一个名为“ID”的列,但它是一个标识列。虽然目前我的代码中没有使用它。
<?php
$MR_ID = $_POST['MR_ID'];
$MR_Name = $_POST['MR_Name'];
$Buyer_ID = $_POST['Buyer_ID'];
$MR_POC_N = $_POST['MR_POC_N'];
$MR_POC_E = $_POST['MR_POC_E'];
$MR_POC_P = $_POST['MR_POC_P'];
$host="xxxxxxxxxx";
$dbName="xxxxxx";
$dbUser="xxxxxxxxxxxxx";
$dbPass="xxxxxxxxxx";
$pdo = new PDO("sqlsrv:server=".$host.";Database=".$dbName, $dbUser, $dbPass);
$sql = "INSERT INTO Stage_Rebate_Master (MR_ID, MR_Name, Buyer_ID, MR_POC_N, MR_POC_E, MR_POC_P) VALUES (?, ?, ?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute(array($MR_ID, $MR_Name, $Buyer_ID, $MR_POC_N, $MR_POC_E, $MR_POC_P));
echo json_encode($result);
?>