Форма Html / Php, не добавляющая в базу данных SQL

Я работаю над этим часами и, в том числе, перестраивая весь свой код, я не могу понять, что не так. Предполагается, что HTML-форма заполняет базу данных SQL пациентов, но она не работает. У меня есть аналогичная форма, которую я использую на другой части веб-сайта, которая работает безупречно, но это не похоже и не может понять, почему.

Спасибо за вашу помощь

Вот изображение полей базы данных : поля базы данных

Вот код:

<?php //session_start(); //if( isset($_SESSION['user_id']) ){ // header("Location: /"); //} require 'connection.php'; $message = ''; if(!empty($_POST['name']) && !empty($_POST['dob']) && !empty($_POST['nok']) && !empty($_POST['nok_add']) && !empty($_POST['nok_phone'])&& !empty($_POST['doa'])&& !empty($_POST['allergies'])): // Enter the new user in the database $sql = "INSERT INTO patients (name, dob, nok, nok_add, nok_phone, doa, allergies) VALUES (:name, :dob, :nok, :nok_add, :nok_phone, :doa, :allergies)"; $stmt = $conn->prepare($sql); $stmt->bindParam(':name', $_POST['name']); $stmt->bindParam(':dob', $_POST['dob']); $stmt->bindParam(':nok', $_POST['nok']); $stmt->bindParam(':nok_add', $_POST['nok_add']); $stmt->bindParam(':nok_phone', $_POST['nok_phone']); $stmt->bindParam(':doa', $_POST['doa']); $stmt->bindParam(':allergies', $_POST['allergies']); if( $stmt->execute() ): $message = 'Successfully created new user'; else: $message = 'Sorry there must have been an issue creating your account'; endif; endif; ?> <html> <head> <title>Patient Add</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" href="assets/css/style.css"> <link href="//fonts.googleapis.com/css?fami=Roboto:400,300,200,100&subset=latin,cyrillic" rel="stylesheet"> <style type="text/css"> #headline { padding: 0.8em; color: white; font-family: Roboto, helvetica, arial, sans-serif; background-color: black; background-image: url(backgroundimage.jpg); background-size: cover; } </style> </head> <body> <div id="headline"> <div class="container"> <header> <h1>Patient Add</h1> <p></p> </header> <button onClick="window.location='manager_select.php';" class="_button">Back</button> <form method="POST" id="add"> <h2>Enter the Patient's Details</h2> <label for="name">Name:</label> <input type="text" name="name"> <label for="dob">Date of Birth:</label> <input type="text" name="dob"> <label for="nok">Next of Kin:</label> <input type="text" name="nok"> <label for="nok_add">Address:</label> <input type="text" name="nok_add"> <label for="nok_phone">Phone:</label> <input type="text" name="nok_phone"> <label for="doa">Date of Admission:</label> <input type="text" name="dob"> <label for="allergies">Allergies:</label> <input type="text" name="allergies"> <?php if(!empty($message)): ?> <p><?= $message ?></p> <?php endif; ?> <input type="submit"> </form> <br> </div> </div> <!-- // [START footer] --> <footer> <div class="container"> <p>Copyright Ghyll Court Residental Home 2017</p> </div> </footer> <!-- // [END footer] --> </script> <script type="text/javascript"> function init() { window.matchMedia("(max-width: 600px)").addListener(hitMQ); } function hitMQ(evt) { sampleCompleted("GettingStarted-ContentWithStyles"); } init(); </script> </body> </html> 

Как ответили на ваш дубликат сообщения (также отвечая здесь на полноту), вы проверяете поле «doa» в вашем операторе if , которого не существует. Ваша форма определяет «доб» дважды: один раз для даты рождения и один раз для даты поступления:

 <label for="dob">Date of Birth:</label> <input type="text" name="dob"> ... <label for="doa">Date of Admission:</label> <input type="text" name="dob"> 

Я не совсем уверен, что это самый безопасный способ, но вместо использования MSQLI PDO, почему бы вам не попробовать простой mysqli_query($conn,$sql);