我做了一个简单的注册表。我应该如何编辑此表单以添加以下内容:user_id 或 date_created? 当我将 user_id 列添加到 PHPMyAdmin 时,用户无法注册,但是当我只有值时: 'First Name' ; '姓' ; '电子邮件' ;数据库内的“密码”,一切正常。
<!DOCTYPE html>
<html>
<head>
<title>Registration</title>
</head>
<body>
<?php
$lclhost = "localhost";
$pass = "";
$root = "root";
$database = "regis";
$con=mysqli_connect ("$lclhost", "$root", "$pass") or die("connection fail".mysql_error());
mysqli_select_db($con, $database) or die("database fail".mysql_error());
?>
<form method="get">
First Name : <input type="text" name="fname"><br>
Last Name : <input type="text" name="lname"><br>
Email: <input type="text" name="email"><br>
Password: <input type="Password" name="password">
<input type="submit" name="btnsubmit">
</form>
<?php
if (isset($_GET['btnsubmit']))
{
$fname = $_GET['fname'];
$lname = $_GET['lname'];
$email = $_GET['email'];
$password = $_GET['password'];
$registration = "INSERT INTO tbl_info values ('".$fname."','".$lname."','".$email."','".$password."')";
mysqli_query($con,$registration);
echo "Succes!";
}
?>
</body>
</html>
由于您的查询没有指定列,因此仅当您提供的列值数与数据库中的列数完全相同时,mysql才会工作。
向数据库添加额外的列将导致查询中断,因为列数不再相同。
您有两个选择:
选项 1: 在查询中添加列名称:
"INSERT INTO tbl_info(Firstname, Lastname, EmailAddress, Password)
VALUES ('".$fname."', '".$lname."', '".$email."', '".$password."')";
选项 2: 始终确保数据库中的列数与您在查询中提供的值的数量完全相同
NB: 如果您有自动递增
id
列,则不必将其包含在第一个选项中,因为每当您插入记录时它都会自动添加值。但您确实需要将其包含在第二个选项中,传递空字符串或 null 作为值