Php вставка данных в таблицу не работает но не показывает никаких ошибок
Извините, мой английский не очень хорош, но мне нужна ваша помощь, чтобы найти то, что не так в файле php ниже.
Я только изучаю PHP и пытаюсь захватить информацию из формы и вставить ее в таблицу в базе данных mySQL.Прежде чем сделать это,я хочу проверить наличие дубликатов имени пользователя или электронной почты, поэтому я добавил оператор if, но никакие данные не были вставлены в таблицу и не было показано никакой ошибки.
Не мог бы кто-нибудь сказать мне, что я делаю не так?
Прежде чем добавить оператор if, он работал.
<?php include('config.php'); $name = $_POST['name']; $user = $_POST['id']; $password = $_POST['password']; $mail = $_POST['email']; $phone = $_POST['phone']; $sex = $_POST['sex']; $nationality = $_POST['nationality']; $dob=$_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['days']; $question = $_POST['mistery_question']; $reply = $_POST['reply']; date_default_timezone_set("Asia/Calcutta"); $insertdate = date("Y-m-d H:i:s"); $sql = "INSERT INTO regist (Name, Username, Password, Mail, PhoneNumber, Sex, Religion, DateOfBirth, Question, Answer,date_time) VALUES ('$name', '$user','$password','$email', '$phone', '$sex', '$nationality', '$dob', '$question', '$reply', '$insertdate')"; mysqli_close($conn); ?>
Что я уже пробовал:
После добавления оператора if. Это не работает
<?php include('config.php'); $name = $_POST['name']; $user = $_POST['id']; $password = $_POST['password']; $mail = $_POST['email']; $phone = $_POST['phone']; $sex = $_POST['sex']; $nationality = $_POST['nationality']; $dob=$_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['days']; $question = $_POST['mistery_question']; $reply = $_POST['reply']; date_default_timezone_set("Asia/Calcutta"); $insertdate = date("Y-m-d H:i:s"); $query = mysqli_query($conn,"SELECT * FROM regist WHERE Username='$user' OR Mail='$mail'"); if(mysqli_num_rows($query) > 0 ) { echo "<script type='text/javascript'>alert('User name or Email id already exists.'); window.location='regist.html';history.back(); </script>"; }else{ $sql = "INSERT INTO regist (Name, Username, Password, Mail, PhoneNumber, Sex, Religion, DateOfBirth, Question, Answer,date_time) VALUES ('$name', '$user','$password','$email', '$phone', '$sex', '$nationality', '$dob', '$question', '$reply', '$insertdate')"; } mysqli_close($conn); ?>
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
PHP: SQL-инъекция - руководство пользователя[^]
РНР: Подготовленные инструкции и хранимые процедуры - руководство пользователя[^]
Richard Deeming
Вы храните пароли в виде обычного текста. Не делай этого!
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
PHP даже включает в себя функции, которые помогут вам делать правильные вещи:
PHP: password_hash[^]
РНР: функцию password_verify[^]
Richard MacCutchan
Вы никогда не выполняете инструкцию INSERT (и не делали этого в первом примере), ничего общего с if.