Помагите составить правильный запрос

karen12

Постоялец
Регистрация
26 Фев 2012
Сообщения
108
Реакции
4
Есть такой код для вставки данных одновременно в две таблицы.Код работает, НО! при вставке в базе первого запроса id перепрыгивает, в чем может быть причина?
Код:
if($action == "add") {
$sql = "INSERT IGNORE INTO `amb_oragir` (
  
     `patient_id_or`,
    `date_or`,
    `text_data_or`,
    `add_date`,
        `doctor_id_or`,
        `doctor_type_or`,
`stac_treat_or`,
`filter_number`  
    ) VALUES (
  
'{$patient_id}',
'{$date_or}',
'{$text_data_or}',

'{$add_date}',
'{$doctor_id_or}',
'{$doctor_type_or}',
'{$stac_treat_or}',
'{$filter_number}'
    )";

$conn->query($sql);  
$last_id=$conn->insert_id;

    foreach($_POST['consultant'] as $key=>$value){
            $sign_consultant = $value;
            $sign_status = $_POST['status'][$key];
            $out_status = '1';
            $patient = $patient_id;
            $visit = $last_id;
            $doctor = $_SESSION['userid'];
            $sign_date = $curent_time_now;
            $out_date = '';
            $conn->query("INSERT INTO `consultation` VALUES('', '$sign_status', '$out_status', '$sign_consultant', '$patient', '$visit', '$doctor', '$sign_date', '$out_date')");
        }  

  
if ($conn->query($sql) === TRUE) {
   header ("Location: ../amb_cart_view.php?id=".$patient_id."&status=1");
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
  
}
 

Вложения

  • а.JPG
    а.JPG
    18,6 KB · Просмотры: 7

Jays

Создатель
Регистрация
4 Окт 2015
Сообщения
20
Реакции
2
Я думаю у тебя где то происходит DELETE он икриментально удаляет строку, и я надеюсь у тебя ИД тип стоит как авто_инкрементал и он является примари кий? и если не трудно предоставь схему таблицы в более детальном виде, там с типа итд.
 

ElenaBeck123!

Создатель
Регистрация
24 Май 2017
Сообщения
20
Реакции
7
DELETE тут не причем. Проблема в INSERT IGNORE, в этом случае, сначала делается auto_increments столбца, а только потом проверяется есть ли дубликат в таблице. Логично что дубликат не добавляется, но счетчик уже увеличился. Чтобы это предотвратить нужно добавить innodb_autoinc_lock_mode = 0 в файл my.cnf
 
Сверху