#php #html #css #sql #pdo
#php #HTML #css — код #sql #pdo
Вопрос:
Я пробовал различные коды, которые работали для других, даже сейчас коды не показывают каких-либо синтаксических ошибок, но информация из HTML-формы не вставляется в базу данных, но таблица создается из того же или похожего кода. Могу ли я, пожалуйста, кто-нибудь указать мне, где я ошибаюсь. Ниже приведен код, который я использую в настоящее время :
<?php require_once("../includes/db.php"); ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<title>SIGN UP || Admin Panel</title>
<link href="css/styles.css" rel="stylesheet" />
<link rel="icon" type="image/x-icon" href="assets/img/favicon.png" />
<script data-search-pseudo-elements defer src="js/all.min.js"></script>
<script src="js/feather.min.js"></script>
</head>
<body class="bg-primary">
<div id="layoutAuthentication">
<div id="layoutAuthentication_content">
<main>
<?php
if(isset($_POST['submit'])) {
$First_Name = trim($_POST['first-name']);
$Last_Name = trim($_POST['last-name']);
$Mobile_No = trim($_POST['mobile-no']);
$Email_id = trim($_POST['email-address']);
$User_Name = trim($_POST['user-name']);
$Password = trim($_POST['password']);
$confirm_password = trim($_POST['confirm-password']);
if($Password != $confirm_password) {
$error = "Password doesn't match";
}
else {
$sql = "INSERT INTO user (User_Name, First_Name, Last_Name, Mobile_No, Email_id, Password)
VALUES (:username :fname, :lname, :mobile, :email, :password)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':username' => $User_Name,
':fname' => $First_Name,
':lname' => $Last_Name,
':mobile' => $Mobile_No,
':email' => $Email_id,
':password' => $Password,
]);
}
}
?>
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-7">
<div class="card shadow-lg border-0 rounded-lg mt-5">
<div class="card-header justify-content-center"><h3 class="font-weight-light my-4">Create Account</h3></div>
<div class="card-body">
<form action="signup.php" method="POST">
<?php
if(isset($error)) {
echo "<p class='alert alert-danger'>{$error}</p>";
}
?>
<div class="form-row">
<div class="col-md-6">
<div class="form-group">
<label class="small mb-1" for="inputFirstName">First Name</label>
<input name="first-name" class="form-control py-4" id="inputFirstName" type="text" placeholder="Enter first name" required="true" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="small mb-1" for="inputLastName">Last Name</label>
<input name="last-name" class="form-control py-4" id="inputLastName" type="text" placeholder="Enter Last Name" required="true" />
</div>
</div>
</div>
<div class="form-group"><label class="small mb-1" for="inputUsername">Username</label>
<input name="user-name" class="form-control py-4" id="inputUsername" type="text" placeholder="Enter Username" required="true" />
</div>
<div class="form-group"><label class="small mb-1" for="inputMobileNo">Mobile No.</label>
<input name="mobile-no" class="form-control py-4" id="inputMobileNo" type="text" placeholder="Enter Mobile No" required="true" />
</div>
<div class="form-group"><label class="small mb-1" for="inputEmailAddress">Email</label>
<input name="email-address" class="form-control py-4" id="inputEmailAddress" type="email" aria-describedby="emailHelp" placeholder="Enter email address" required="true" />
</div>
<div class="form-row">
<div class="col-md-6">
<div class="form-group"><label class="small mb-1" for="inputPassword">Password</label>
<input name="password" class="form-control py-4" id="inputPassword" type="password" placeholder="Enter password" required="true" />
</div>
</div>
<div class="col-md-6">
<div class="form-group"><label class="small mb-1" for="inputConfirmPassword">Confirm Password</label>
<input name="confirm-password" class="form-control py-4" id="inputConfirmPassword" type="password" placeholder="Confirm password" required="true" />
</div>
</div>
</div>
<div class="form-group mt-4 mb-0">
<button name="submit" class="btn btn-primary btn-block" type="submit">Create Account</button>
</div>
</form>
</div>
<div class="card-footer text-center">
<div class="small">
<a href="signin.php">Have an account? Go to signin</a>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
</div>
</div>
<!--Script JS-->
<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/bootstrap.bundle.min.js"></script>
<script src="js/scripts.js"></script>
</body>
</html>
Комментарии:
1. Где вы определяете переменную $pdo? Это кажется неопределенным
2. Я включил это в db.php файл и его код: ` <?php $dsn = «mysql:host=localhost;dbname=bnxchange»; попробуйте{ $pdo = новый PDO($dsn, ‘root’, «); } catch(PDOException $e) { echo $e->GetMessage(); } ?>`
3. Дважды проверьте совпадение имен столбцов в $sql и db, у меня было имя столбца с ошибкой, и ошибка не была выдана. Если они кажутся нормальными, скопируйте этот запрос в Mysql Workbench, добавьте некоторые фиктивные данные в качестве значений и запустите его, чтобы увидеть, выполняется ли он нормально или с ошибками
4. Я сделал имена столбцов без ошибок, но когда я попытался запустить запрос в sql, он выдал ошибку: ВСТАВИТЬ В контакт (имя пользователя, адрес электронной почты, комментарии) ЗНАЧЕНИЯ (JohnDoe, jd@gmail.com , готово) Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашемуВерсия сервера MariaDB для правильного синтаксиса для использования рядом ‘@gmail.com , готово)’ в строке 2 0.000 сек.
5. Заключайте значения в кавычки (‘JohnDoe’, ‘jd@gmail.com ‘, ‘готово’) и посмотрим, поможет ли это
Ответ №1:
Попробуйте:
<?php require_once("../includes/db.php"); ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<title>SIGN UP || Admin Panel</title>
<link href="css/styles.css" rel="stylesheet" />
<link rel="icon" type="image/x-icon" href="assets/img/favicon.png" />
<script data-search-pseudo-elements defer src="js/all.min.js"></script>
<script src="js/feather.min.js"></script>
</head>
<body class="bg-primary">
<div id="layoutAuthentication">
<div id="layoutAuthentication_content">
<main>
<?php
if(isset($_POST['submit'])) {
$First_Name = trim($_POST['first-name']);
$Last_Name = trim($_POST['last-name']);
$Mobile_No = trim($_POST['mobile-no']);
$Email_id = trim($_POST['email-address']);
$User_Name = trim($_POST['user-name']);
$Password = trim($_POST['password']);
$confirm_password = trim($_POST['confirm-password']);
if($Password != $confirm_password) {
$error = "Password doesn't match";
}
else {
$sql = "INSERT INTO user (`User_Name`, `First_Name`, `Last_Name`, `Mobile_No`, `Email_id`, `Password`)
VALUES (':username',':fname', ':lname', ':mobile', ':email', ':password')";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':username' => $User_Name,
':fname' => $First_Name,
':lname' => $Last_Name,
':mobile' => $Mobile_No,
':email' => $Email_id,
':password' => $Password,
]);
}
}
В ответ на @kmoser я добавил ''
данные, которые должны быть добавлены.
Комментарии:
1. Что вы изменили? Пожалуйста, опишите, что вы сделали по-другому, чтобы читатели могли извлечь выгоду.