【发布时间】:2018-08-19 04:20:30
【问题描述】:
我正在尝试为我正在处理的当前应用程序项目重新学习我的 Web 开发技能。我已经验证我的 PHP 后端正在从前端的 HTML/JS 表单中获取传递给它的数据。但是当我提交表单时,网页没有提到任何错误。一切看起来都很好,直到我查看数据库并没有添加任何内容。我没有看到最后的回声表明数据添加成功或添加数据失败。
register.php
<?php
include "conn.php";
if(empty($_POST['firstName']) || empty($_POST['lastName']) || empty($_POST['email']) || empty($_POST['password']) || empty($_POST['pin'])) {
echo "<br>Error: Please fill out all required fields.";
} else if($_POST['password'] != $_POST['confirmPassword']) {
echo "<br>Error: Passwords do not match.";
} else if($_POST['pin'] != $_POST['confirmPin']) {
echo "<br>Error: Pin codes do not match.";
} else if(strlen($_POST['password']) > 20 || strlen($_POST['password']) < 8) {
echo "<br>Error: Passwords must be between 8 and 20 characters in length.";
} else if(strlen($_POST['pin']) != 4) {
echo "<br>Error: Pin codes must be a maximum of 4 characters.";
} else if(strlen($_POST['firstName']) > 50 && strlen($_POST['lastName']) > 50 && strlen($_POST['email']) > 50) {
echo "<br>Error: First Name, Last Name, and E-mail fields must be shorter than 50 characters in length.";
} else if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
echo "<br>Error: You must use a valid e-mail address.";
} else {
echo "<br><br>Successfully checked all data!";
$options = [
'cost' => 12,
];
$hash = password_hash($_POST['password'], PASSWORD_BCRYPT, $options);
$numericPin = (int)$_POST['pin'];
$currentDateTime = date("Y-m-d H:i:s");
$stmt = $conn->prepare("INSERT INTO account (firstName, lastName, email, password, pin, registerDate) VALUES (:firstName, :lastName, :email, :password, :pin, :registerDate)");
$stmt->bindParam(":firstName", $_POST['firstName']);
$stmt->bindParam(":lastName", $_POST['lastName']);
$stmt->bindParam(":email", $_POST['email']);
$stmt->bindParam(":password", $hash);
$stmt->bindParam(":pin", $numericPin);
$stmt->bindParam(":registerdate", $currentDateTime);
if($stmt->execute()) {
echo "<br><br>Data added successfully";
} else {
echo "<br><br>Failed to add data";
}
}
?>
MySQL 数据库结构: MySQL DB Structure Picture Link
【问题讨论】:
-
您真的看到
Failed to add data打印了吗?如果不是,那你怎么知道插入失败? -
因为当我查看我的数据库表时,其中有 0 行。但是并没有说添加数据失败,也没有说数据添加成功。
-
那么你的代码可能在插入调用之前就失败了。你应该检查你的连接逻辑。
-
连接成功完成。 conn.php 中有一个成功通过检查的回声。如果我在文件末尾添加回声,它不会执行。如果我在执行的 if($stmt->execute()) { 行之前运行它。所以它在执行部分失败了。有没有办法查询 $stmt 变量的错误?
-
See here 了解如何在 PDO 中使用 try catch ...我猜你会看到一些东西。