Вставка идентификатора в таблицу SQL, проблема с тем же номером идентификатора - PullRequest
0 голосов
/ 04 июля 2019

Я не хочу, чтобы для идентификатора таблицы SQL Server было установлено автоматическое увеличение. Поэтому я установил этот номер в моей программе PHP. Для этого я получаю текущее значение идентификатора таблицы, а затем добавляю + 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();";

Теперь у меня есть форма, и в нее можно вставить более 1 строки в таблицу SQL (MyTable). Теперь проблема заключается в том, что при использовании кода ниже он дает всем вставленным строкам одинаковый идентификатор. И поэтому я получаю сообщение об ошибке, повторяющие значения идентификатора.

Как мне это преодолеть?

1 Ответ

0 голосов
/ 04 июля 2019
  1. Убедитесь, что у вас есть метка времени для каждой вставляемой записи
  2. Выберите последнюю вставленную запись.
  3. Исходя из идентификатора, это может быть строка, поэтому получите целое число из строки.
  4. Добавьте 1 из полученной строки, чтобы получить инкрементное значение.
  5. Добавить префикс к увеличенному целому числу, т. Е. T23.
  6. Сохраните его в переменную и вставьте как любую другую переменную.

    // предполагаем, что переменная, ссылающаяся на соединение с базой данных, $ dbc // получить последний идентификатор $ select_last_id_sql = mysqli_query ($ dbc, "SELECT table_id, time_recorded FROM TableName ORDER BY time_recorded DESC LIMIT 1") или умереть (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;

...