Я пытаюсь создать форму для добавления данных в базу данных SQL. Сначала он извлекает для меня данные, которые уже существуют в другой таблице, а затем я их добавляю в базу данных вместе с созданной мной формой. Но, несмотря на отсутствие ошибок, данные не вставляются, они возвращаются с 0 строками. Я пытался исправить это часами и не могу придумать ничего, что могло бы это исправить.
Вот мой код, который извлекает данные из существующей таблицы:
<form action = "" method = "POST" class = "form-horizontal">
<fieldset>
<legend>Action Taker:</legend>
<label class = "control-label col-lg-4">Employee Name: </label>
<input type = "text" name = "employ_first" value = "<?php echo (isset($row['first_name'])&&!empty($row['first_name'])) ? $row['first_name'] : ''; ?>" disabled>
<input type = "text" name = "employ_second" value = "<?php echo (isset($row['second_name'])&&!empty($row['second_name'])) ? $row['second_name'] : ''; ?>" disabled>
<label class = "control-label col-lg-4">Staff Comment: </label>
<input type = "text" name = "reason_emp" value = "<?php echo (isset($row['reason'])&&!empty($row['reason'])) ? $row['reason'] : ''; ?>" size = "100" disabled>
<div>
</div>
<div>
<label class = "control-label col-lg-4">Add Respond Comment:</label>
<div class = "col-lg-4">
<input type = "text" name = "admin_respond" class = "form-control" size = "50px"/>
</div>
<div>
</div>
</div>
<input type = "submit" name = "submit" class = "form-control" value = "Add" />
</form>
Вот код ФОРМЫ:
<form action = "meeting_schema.php" method = "POST" class = "form-horizontal">
<h3>Fill The Form For Investigation:</h3>
<div>
<label>Type of Investigation:</label>
<input name = "type" type = "text">
<label>Set Date:</label>
<input name = "set_on_date" type = "date">
<label>Set Time:</label>
<input name = "set_on_time" type = "time">
<label>Assigned to:</label>
<input name = "assigned_to" type = "text">
<input type = "submit" name = "add_meeting" value = "Create Meeting" />
</div>
</form>
А вот и мой php-файл с действием meeting_schema:
<?php
$hostnames = "localhost";
$usernames = "u3253997...";
$passwords = "Ws.....";
$databaseNames = "u3253997...";
$conns= mysqli_connect($hostnames, $usernames, $passwords, $databaseNames);
if (!$conns) {
die('Connection failed: ' . mysqli_connect_error());
}
if (!$conns) {
die("Connection failed: " . mysqli_connect_error());
}
if (isset($_POST['add_meeting'])){
$stmt = $conns->prepare("INSERT INTO `emp_inv` (`meeting.id`,`employ_first`,`employ_second`,`reason`,`type`,`set_on_date`, `set_on_time`, `set_by`, `assigned_to`) VALUES (NULL,?,?,?,?,?,?,?,?)");
if (!$stmt) {
echo "There is an error in the source code, please contact support to fix the problem.";
}
else {
$stmt->bind_param('ssssssss', $_POST['employ_first'], $_POST['employ_second'], $_POST['reason_emp'], $_POST['type'], $_POST['set_on_date'], $_POST['set_on_time'], $_SESSION['set_by'], $_POST['assigned_to']);
$stmt->execute();
echo "Meeting has been created";
header("location:meetings.php");
}
}
?>
Также см. Как получать полезные сообщения об ошибках в PHP?
bind_param может вернуть НУЛЕВОЙ при ошибке, вы не проверяете это.
meeting.id" ? Я не рекомендую использовать точки в названиях столбцов. Это затруднит чтение вашего кода и, вероятно, в какой-то момент приведет вас к ошибкам.
Неустранимая ошибка: Неперехваченный mysqli_sql_exception: столбец «Employ_first» не может быть пустым в /home/u325399794/domains/mcdempolog.hostingerapp.com/public_ html / admin / meeting_s chema.php: 28 Трассировка стека: # 0 / home / u325399794 / domains / mcdempolog.hostingerapp.com / public_ html / admin / meeting_s chema.php (28): mysqli_stmt-> execute () # 1 {main} добавлено в /home/u325399794/domains/mcdempolog.hostingerapp.com/public_ Html / admin / meeting_s chema.php в строке 28 вот что сейчас отображается
Вы отлаживали код, чтобы увидеть, поступают ли данные в $ _POST?
Столбец - NOT NULL. Не вводите как ? NULL, просто оставьте пустую строку ? '' Если вы хотите оставить ее пустой ?
Вы говорите, что у вас нет ошибок, да. Вы их не проверяете, вот почему.
Привет, извините за отсутствие ответа, я исправил это сейчас, как будто я знаю, что происходит. Я не ожидаю, что люди исправят это за меня, потому что я только начал с кода и хочу учиться самостоятельно. Спасибо ребята за помощь






Используйте код ниже ...
$stmt->bind_param('ssssssss',$employ_first,$employ_second, $reason_emp,$type,$set_on_date,$set_on_time,$set_by,$assigned_to);
$employ_first = $_POST['employ_first'];
$employ_second = $_POST['employ_second'];
$reason_emp = $_POST['reason_emp'];
$type = $_POST['type'];
$set_on_date = $_POST['set_on_date'];
$set_on_time = $_POST['set_on_time'];
$set_by = $_SESSION['set_by'];
$assigned_to = $_POST['assigned_to'];
$stmt->execute();
echo "Meeting has been created";
$stmt->close();
Вы не проверяете возвращаемое значение
bind_param()илиexecute(). См. Как получить информацию об ошибках MySQLi в разных средах для более простого способа