2016-11-21 3 views
0

Ich habe eine Tabelle, die 221 Zeilen aus einer Datenbanktabelle importiert. Immer wenn ich eine Zeile dynamisch innerhalb der HTML-Tabellenseite hinzufüge, möchte ich, dass sie die MAX-ID ziehen kann, also in diesem Fall 221, und füge 1 hinzu, wodurch die MR_ID auf 222 gebracht wird. Ich brauche das, weil jede ID muss einzigartig sein. Immer wenn ich eine Zeile in die Tabelle einfüge und sie in der Datenbank anschaue, wird sie als NULL angezeigt. Ich habe ein bisschen was dafür, aber es scheint nicht zu funktionieren. Wenn Sie mehr Code benötigen, als ich geschrieben habe, lassen Sie es mich wissen und ich werde es bereitstellen. Vielen Dank!Einstellung MAX für Auto Increment ID in SQL Server

<?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="xxxxxxx"; 
    $dbName="xxxx"; 
    $dbUser="xxxxxxxxxxx"; 
    $dbPass="xxxxxxxxx"; 

    $pdo = new PDO("sqlsrv:server=".$host.";Database=".$dbName, $dbUser, $dbPass); 

    $MR_ID = "Select MAX(MR_ID) + 1 FROM Stage_Rebate_Master"; 
    $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); 

?> 
+2

max versuchen + 1 unterliegt Bedingungen fahren. Warum nicht die MR_ID auf eine Identität oder auto_increment setzen und die Datenbank damit umgehen lassen, um Rennbedingungen zu vermeiden? – xQbert

+0

Ich habe eine andere Spalte, die automatisch erhöht und könnte als die tatsächliche ID verwendet werden .... aber diese MR_ID Spalte wird als Nachschlagen in der gesamten Datenbank verwendet, so kann ich nicht nur den Nullwert – Rataiczak24

+0

scheint wie ein seltsamer Weg zu Relation von Tabellen zu Nicht-Schlüsselwerten ... Ich nehme an, Sie könnten einen Trigger verwenden, um die MR_ID vor der Aktualisierung auf den automatisch inkrementierten Wert zu setzen. (Angenommen, dieses DBMS verwendet Trigger) – xQbert

Antwort

0

Sie dieses

$sql = "INSERT INTO Stage_Rebate_Master (MR_ID, MR_Name, Buyer_ID, MR_POC_N, MR_POC_E, MR_POC_P) SELECT ISNULL(MAX(MR_ID)+1,1), ?, ?, ?, ?, ? FROM Stage_Rebate_Master"; 
$stmt = $pdo->prepare($sql); 
$result = $stmt->execute(array($MR_Name, $Buyer_ID, $MR_POC_N, $MR_POC_E, $MR_POC_P)); 
+0

Immer wenn ich das ausführe, erhalte ich einen internen Serverfehler ... ich vermute es hat etwas mit der Abfrage zu tun – Rataiczak24

Verwandte Themen