Не удаётся сохранить данные в таблицу

У меня есть 2 таблицы одна это работники, 2-я это отделы при заполнении формы работники пытаюсь сделать выпадающий список на отделы с сохранением в БД. Пишу на opebserver php 5.6 , база mysql

<div id="dialog-form_workers" title="Добавление записи">

    <form id="form1">
        <div id="divfilds1">
            <label for="Surname">Фамилия</label> 
            <input type="text" name="Surname" id="Surname" value=" " style="width:255px;"><br>
            
            <label for="Name">Имя</label> 
            <input type="text" name="Name" id="Name" value=" " style="width:255px;"><br>
            
            <label for="Phone">Телефон</label> 
            <input type="text" name="Phone" id="Phone" value=" " style="width:255px;"><br>
            
            <label for="user_login">Логин</label> 
            <input type="text" name="user_login" id="user_login" value=" " style="width:255px;"><br>
            
            <label for="user_password">Пароль</label> 
            <input type="text" name="user_password" id="user_password" value=" " style="width:255px;"><br>
            
            <label for="Date_of_Birth">Дата рождения</label>
            <input type="text" name="Date_of_Birth" id="Date_of_Birth" value=" " style="width:100px"><br>
                
            <label for="WorkHours">Часы работы</label> 
            <input type="text" name="WorkHours" id="WorkHours" value=" " style="width:255px;"><br>
            
            <label for="DepartmentCode">Отдел</label> 
            <input type="text" name="DepartmentCode" id="DepartmentCode" value=" " style="width:255px;"><br>
<!--<select name="DepartmentCode" id="select_type" ><option value="none" hidden=" "><?php echo $_POST["categories"];?></option></select> -->
                <?
$sql = "SELECT * FROM `departments` ORDER BY `id`";
$res = mysqli_query($db, $sql)
or die( "Произошла ошибка : " . mysql_error());
 
echo "<select name=DepartmentCode ?>\r\n";
 
while($row = mysqli_fetch_assoc($res))
    {
        echo "<option value={$row['fName']}";
 
            if($row['fName'] == $_POST['fName'])
            {
                echo " selected ";
            }   
 
        echo " >{$row['fName']}</option>";
    }
echo "</select>\r\n";  ?>   

            <label for="statuss_opportunities">статус</label> 
            <input type="text" name="statuss_opportunities" id="statuss_opportunities" value=" " style="width:255px;"><br>
        </div>

    
        <div style="width:1px; height:1px;">
            <input type="hidden" name="id" id="id" value=" ">
        </div>

        <input id="Add" type="submit" tabindex="-1" style="position:absolute; top:-1000px">
    </form>
</div>

Сам код ошибки

Couldn't execute query. >>>INSERT INTO clinicalenginners (id, Surname, Name, Phone, user_login, user_password, Date_of_Birth , WorkHours, DepartmentCode, statuss_opportunities) VALUES (6,'','','','','74be16979710d4c4e7c6647856088456','2022-04-29',0,0,0)<<<< Cannot add or update a child row: a foreign key constraint fails (raccoon.clinicalenginners, CONSTRAINT ClinicalEnginners_ibfk_1 FOREIGN KEY (DepartmentCode) REFERENCES departments (id)).

Сам sql запрос

$sql = mysqli_query($db, "INSERT INTO `clinicalenginners` (id, Surname, Name, Phone, user_login, user_password, Date_of_Birth , WorkHours, DepartmentCode, statuss_opportunities) 
                                VALUES ($id,'$Surname','$Name','$Phone','$user_login','$user_password','$Date_of_Birth',$WorkHours,$DepartmentCode,$statuss_opportunities) SELECT (*) FROM `clinicalenginners`, `departments` WHERE clinicalenginners.DepartmentCode = departments.id ")or die("Couldn't execute query. >>>" . "INSERT INTO `clinicalenginners` (id, Surname, Name, Phone, user_login, user_password, Date_of_Birth , WorkHours, DepartmentCode, statuss_opportunities) 
                                VALUES ($id,'$Surname','$Name','$Phone','$user_login','$user_password','$Date_of_Birth',$WorkHours,$DepartmentCode,$statuss_opportunities)" . "<<<< " . mysqli_error($db));

Ответы (1 шт):

Автор решения: pgood

В коде видно, что вместо реального идентификатора подразделения отправляется пробел. Вероятнее всего, здесь должен быть select со значениями поля id из таблицы departments, тогда, если указать существующее в таблице departments подразделение, добавление записи пройдет успешно. Или удалите внешний ключ ClinicalEnginners_ibfk_1 из таблицы clinicalenginners, если вам эта связь не нужна.

<input type="text" name="DepartmentCode" id="DepartmentCode" value=" " style="width:255px;"><br>
<!--<select name="DepartmentCode" id="select_type" ><option value="none" hidden=" "><?php echo $_POST["categories"];?></option></select> -->
→ Ссылка