将ID插入SQL表中,ID号相同的问题

时间:2019-07-04 12:08:30

标签: php sql-server database sql-insert

我不想将SQL Server表的ID号设置为自动递增。因此,我在PHP程序中设置了此数字。我这样做的方法是,获取表的当前ID值,然后向其添加+1,然后将此数字插入表中。

示例:

$query = "SELECT MAX(ID) FROM T01"; 
$result=sqlsrv_query($conn, $query);
$IDTable = sqlsrv_fetch_array($result);

$Column1= getPOST('Column1' . $column); 
$Column2= getPOST('Column2' . $Column);
$ID1 = $IDTable[0]+1;
$params = array(&$ID1,&$Column1,&$Column2);

# Statement
$sql = "INSERT INTO MyTable ([ID],[Column1],[Column2]) VALUES (?,?); SELECT SCOPE_IDENTITY();";

现在我有了一个表单,在该表单中,可以在SQL表(MyTable)中插入多于1行。现在发生问题,使用下面的代码为所有插入的行赋予相同的ID。因此,我收到一条错误消息,说重复的ID值。

我该如何克服?

1 个答案:

答案 0 :(得分:0)

  1. 确保插入的每条记录都有时间戳
  2. 选择最后插入的记录。
  3. 基于id,它可能是字符串,因此请从字符串中获取整数。
  4. 从获得的字符串中添加1以获得增量值。
  5. 将前缀添加到递增的整数(即T23)中。
  6. 将其保存到变量中,并将其作为其他任何变量插入。

    //假定$ dbc是引用数据库连接的变量 //获取最后一个ID $ select_last_id_sql = mysqli_query($ dbc,“ SELECT table_id,time_recorded from TableName ORDER BY time_recorded DESC LIMIT 1”)或die(mysqli_error($ dbc);

    $ id_row = mysqli_fetch_array($ select_last_id_sql); $ id = $ id_row ['table_id']; $ int =(int)filter_var($ id,FILTER_SANITIZE_NUMBER_INT); $ int = $ int + 1; $ new_table_id =“ T”。$ int;