MySQL 数据库中未插入数据,但没有错误
Data not inserted in MySQL database, but there's no error
首先,我不熟悉 php、XAMPP 和 SQL。我花了很多时间试图自己解决这个问题,但我没有解决任何问题。
我想将我网站上的输入表单中的数据插入到我的数据库中。当我填写表格时,脚本运行时没有任何抱怨,但没有数据插入到我的数据库中。我的phpadmin 中也没有显示任何错误,仅返回 0 行。
<?php
if (isset($_POST['submit'])) {
include_once 'database.php';
$first_name = mysqli_real_escape_string($conn, $_POST['first_name']);
$last_name = mysqli_real_escape_string($conn, $_POST['last_name']);
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
$pin = mysqli_real_escape_string($conn, $_POST['pin']);
//Errors
//Check for NOT NULL
if (empty($first_name) || empty($last_name) || empty($username) || empty($password))
{
header("Location: ../signup.php?signup=empty");
exit();
} else {
//check if input charakters are valid
if (!preg_match("/^[a-zA-Z]*$/", $first_name) || !preg_match("/^[a-zA-Z]*$/", $last_name))
{
header("Location: ../signup.php?signup=invalid");
exit();
} else {
$sql = "SELECT * FROM user WHERE username='$username'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
header("Location: ../signup.php?signup=usertaken");
exit();
} else {
//Hashing Password
$hashedpassword = password_hash($password, PASSWORD_DEFAULT);
//insert user into database
$sql = "INSERT INTO user (first_name, last_name, username, password, pin) VALUES ('$first_name', '$last_name', '$username', '$hashedpassword', '$pin');";
mysqli_query($conn, $sql);
header("Location: ../signup.php?signup=success");
exit();
}
}
}
} else {
header("location: ../signup.php");
exit();
}
数据库是标准设置,有 root、localhost 且没有 PW
<?php
$dbServername ="localhost";
$dbUsername ="root";
$dbPassword ="";
$dbName ="ntust";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
?>
由于我对SQL也不是很熟悉,我开始怀疑是不是我的表有问题?
CREATE TABLE user (
id Bigint(20) Primary Key auto_increment,
username varchar(255) NOT NULL unique,
pin varchar(6) NOT NULL,
password varchar(255) NOT NULL,
first_name varchar(255) NOT NULL,
last_name varchar(255),
last_modified_date datetime NOT NULL,
created_date datetime NOT NULL
);
根据您的经验,我认为以下是最合适的解决方案。
将您的代码更改为:
$result = mysqli_query($conn, $sql);
if (!$res) {
printf("Errormessage: %s\n", mysqli_error($conn));
}
通过这种方式您可以检查您的查询是否有错误
I would suggest to start looking for simple code debugging techniques and start searching for the appropriate documentation for php
and mysqli
您可以随时查看 mysqli_error()
w3schools 文档 here
数据库连接
$dbServername ="localhost";
$dbUsername ="root";
$dbPassword ="";
$dbName ="ntust";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
?>
数据库格式
CREATE TABLE user (
id Bigint(20) Primary Key auto_increment,
username varchar(255) NOT NULL unique,
pin varchar(6) NOT NULL,
password varchar(255) NOT NULL,
first_name varchar(255) NOT NULL,
last_name varchar(255),
last_modified_date datetime NOT NULL,
created_date datetime NOT NULL
);
更新代码
<?php
if (isset($_POST['submit']) && !empty($_POST['first_name']) && !empty($_POST['last_name']) && !empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['pin'])) {
if (!preg_match("/^[a-zA-Z]*$/", $_POST['first_name']) || !preg_match("/^[a-zA-Z]*$/", $_POST['last_name'])) {
# code...
header("Location: ../signup.php?signup=empty");
exit();
}
elseif (!preg_match("/^[a-zA-Z]*$/", $_POST['first_name']) || !preg_match("/^[a-zA-Z]*$/", $_POST['first_name'])) {
# code.. check if input charakters are valid
header("Location: ../signup.php?signup=invalid");
exit();
}
include_once 'database.php';
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$username = $_POST['username'];
$password = $_POST['password'];
$pin = $_POST['pin'];
$last_modified_date = date("d-m-Y");
$created_date = date("d-m-Y");
$sql = "SELECT * FROM user WHERE username='$username'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
header("Location: ../signup.php?signup=usertaken");
exit();
} else {
//md5 Password
$md5password = md5($password);
//insert user into database
$sql = "INSERT INTO user (first_name, last_name, username, password, pin,last_modified_date,created_date) VALUES ('$first_name', '$last_name', '$username', '$md5password', '$pin','$last_modified_date','$created_date ');";
mysqli_query($conn, $sql);
header("Location: ../signup.php?signup=success");
exit();
}
}
else {
$error = " Fill the all the details first";
if (isset($_POST['submit']) && isset($error)) {
echo "$error";
}
}
?>
注意:当我检查你的数据库时,你有一个 last_modified_date datetime NOT NULL,
和 created_date datetime NOT NULL
所以,根据这段代码更新它,其他一切都很好!!
首先,我不熟悉 php、XAMPP 和 SQL。我花了很多时间试图自己解决这个问题,但我没有解决任何问题。
我想将我网站上的输入表单中的数据插入到我的数据库中。当我填写表格时,脚本运行时没有任何抱怨,但没有数据插入到我的数据库中。我的phpadmin 中也没有显示任何错误,仅返回 0 行。
<?php
if (isset($_POST['submit'])) {
include_once 'database.php';
$first_name = mysqli_real_escape_string($conn, $_POST['first_name']);
$last_name = mysqli_real_escape_string($conn, $_POST['last_name']);
$username = mysqli_real_escape_string($conn, $_POST['username']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
$pin = mysqli_real_escape_string($conn, $_POST['pin']);
//Errors
//Check for NOT NULL
if (empty($first_name) || empty($last_name) || empty($username) || empty($password))
{
header("Location: ../signup.php?signup=empty");
exit();
} else {
//check if input charakters are valid
if (!preg_match("/^[a-zA-Z]*$/", $first_name) || !preg_match("/^[a-zA-Z]*$/", $last_name))
{
header("Location: ../signup.php?signup=invalid");
exit();
} else {
$sql = "SELECT * FROM user WHERE username='$username'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
header("Location: ../signup.php?signup=usertaken");
exit();
} else {
//Hashing Password
$hashedpassword = password_hash($password, PASSWORD_DEFAULT);
//insert user into database
$sql = "INSERT INTO user (first_name, last_name, username, password, pin) VALUES ('$first_name', '$last_name', '$username', '$hashedpassword', '$pin');";
mysqli_query($conn, $sql);
header("Location: ../signup.php?signup=success");
exit();
}
}
}
} else {
header("location: ../signup.php");
exit();
}
数据库是标准设置,有 root、localhost 且没有 PW
<?php
$dbServername ="localhost";
$dbUsername ="root";
$dbPassword ="";
$dbName ="ntust";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
?>
由于我对SQL也不是很熟悉,我开始怀疑是不是我的表有问题?
CREATE TABLE user (
id Bigint(20) Primary Key auto_increment,
username varchar(255) NOT NULL unique,
pin varchar(6) NOT NULL,
password varchar(255) NOT NULL,
first_name varchar(255) NOT NULL,
last_name varchar(255),
last_modified_date datetime NOT NULL,
created_date datetime NOT NULL
);
根据您的经验,我认为以下是最合适的解决方案。
将您的代码更改为:
$result = mysqli_query($conn, $sql);
if (!$res) {
printf("Errormessage: %s\n", mysqli_error($conn));
}
通过这种方式您可以检查您的查询是否有错误
I would suggest to start looking for simple code debugging techniques and start searching for the appropriate documentation for
php
andmysqli
您可以随时查看 mysqli_error()
w3schools 文档 here
数据库连接
$dbServername ="localhost";
$dbUsername ="root";
$dbPassword ="";
$dbName ="ntust";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
?>
数据库格式
CREATE TABLE user (
id Bigint(20) Primary Key auto_increment,
username varchar(255) NOT NULL unique,
pin varchar(6) NOT NULL,
password varchar(255) NOT NULL,
first_name varchar(255) NOT NULL,
last_name varchar(255),
last_modified_date datetime NOT NULL,
created_date datetime NOT NULL
);
更新代码
<?php
if (isset($_POST['submit']) && !empty($_POST['first_name']) && !empty($_POST['last_name']) && !empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['pin'])) {
if (!preg_match("/^[a-zA-Z]*$/", $_POST['first_name']) || !preg_match("/^[a-zA-Z]*$/", $_POST['last_name'])) {
# code...
header("Location: ../signup.php?signup=empty");
exit();
}
elseif (!preg_match("/^[a-zA-Z]*$/", $_POST['first_name']) || !preg_match("/^[a-zA-Z]*$/", $_POST['first_name'])) {
# code.. check if input charakters are valid
header("Location: ../signup.php?signup=invalid");
exit();
}
include_once 'database.php';
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$username = $_POST['username'];
$password = $_POST['password'];
$pin = $_POST['pin'];
$last_modified_date = date("d-m-Y");
$created_date = date("d-m-Y");
$sql = "SELECT * FROM user WHERE username='$username'";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0) {
header("Location: ../signup.php?signup=usertaken");
exit();
} else {
//md5 Password
$md5password = md5($password);
//insert user into database
$sql = "INSERT INTO user (first_name, last_name, username, password, pin,last_modified_date,created_date) VALUES ('$first_name', '$last_name', '$username', '$md5password', '$pin','$last_modified_date','$created_date ');";
mysqli_query($conn, $sql);
header("Location: ../signup.php?signup=success");
exit();
}
}
else {
$error = " Fill the all the details first";
if (isset($_POST['submit']) && isset($error)) {
echo "$error";
}
}
?>
注意:当我检查你的数据库时,你有一个 last_modified_date datetime NOT NULL,
和 created_date datetime NOT NULL
所以,根据这段代码更新它,其他一切都很好!!