php - 数据库查询失败

标签 php mysql sql insert

我正在尝试构建一个用户注册系统,但我的代码没有向表中插入任何新记录。以下是代码:

<?php 
    require("../includes/database.php");
?>
<?php
    //mysql_
    $connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if(mysqli_connect_errno())
    {
        die("Database connection failed: " .
                    mysqli_connect_error() .
        " (" . mysqli_connect_errno() . ")");
    }
?>
<?php
    if(isset($_POST['register'])) {
        session_start();
        $f_name = $_POST['fname'];
        $l_name = $_POST['lname'];
        $email = $_POST['email'];
        $pword = $_POST['key'];

        $query ="INSERT INTO students (f_name, l_name, email, password) VALUES('{$f_name}', '{$l_name}', '{$email}', '{$pword}')";
    $result = mysqli_query($connection, $query);

    if(!$result){
        die("Database query failed.");
    }
    echo $f_name;
    //header('Location: login.php');
    }
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>EdHoc - Sign Up</title>
    <!-- Latest compiled and minified CSS -->
</head>
<body>

    <!--login form-->
    <section id="signup">
    <div class="container">
        <div class="row">
            <div class="col-xs-12">
                <div class="form-wrap">
                <h1>Sign Up</h1>
                    <form role="form" action="Sign_up.php" method="post" id="register-form" name="register-form" autocomplete="off">
                        <div class="form-group">
                            <label for="first_name" class="sr-only">First Name</label>
                            <input type="fname" name="fname" id="fname" class="form-control"  required = "required" placeholder="Enter First Name " >
                        </div>
                        <div class="form-group">
                            <label for="last_name" class="sr-only">Last Name</label>
                            <input type="lname" name="lname" id="lname" class="form-control"  required = "required" placeholder="Enter Last Name ">
                        </div>
                        <div class="form-group">
                            <label for="email" class="sr-only">Email</label>
                            <input type="email" name="email" id="email" class="form-control"  required = "required" placeholder="Enter Email-Id ">
                        </div>
                        <div class="form-group">
                            <label for="key" class="sr-only">Password</label>
                            <input type="password" name="key" id="key" class="form-control"  required = "required" placeholder="Password">
                        </div>
                        <input type="submit" id="btn-login" class="btn btn-custom btn-lg btn-block" value="Sign Up" name="register">
                    </form>
                    <hr>
                </div>
            </div> <!-- /.col-xs-12 -->
        </div> <!-- /.row -->
    </div> <!-- /.container -->
</section>


</script>
</body>

以上代码返回数据库查询失败。

我的数据库表:

    CREATE TABLE students
(
    student_id INT NOT NULL AUTO_INCREMENT,
    username VARCHAR(30),
    email VARCHAR(80),
    password VARCHAR(30),
    f_name VARCHAR(30),
    l_name VARCHAR(30),
    bio VARCHAR(350),
    dp VARCHAR(15),
    is_suspended CHAR(1) DEFAULT '0' NOT NULL,
    suspension_reason VARCHAR(150),
    role_id INT NOT NULL,
    created_on DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_on TIMESTAMP,
    is_active CHAR(1) DEFAULT '1' NOT NULL,
    city VARCHAR(15) NOT NULL,
    state VARCHAR(15) NOT NULL,
    zip VARCHAR(6) NOT NULL,
    b_day DATE,
    CONSTRAINT students_id_pk PRIMARY KEY(student_id),
    CONSTRAINT students_role_id_fk FOREIGN KEY(role_id) REFERENCES user_roles(role_id) ON DELETE CASCADE,
    CONSTRAINT students_username_uq UNIQUE(username),
    CONSTRAINT students_email_uq UNIQUE(email)
);

First Name 等表单元素被正确回显。

最佳答案

你的问题是约束问题。

INSERT INTO students (f_name, l_name, email, password) VALUES ....

然而所有这些列都假定为 null 且没有 null 约束:

role_id INT NOT NULL,
city VARCHAR(15) NOT NULL,
state VARCHAR(15) NOT NULL,
zip VARCHAR(6) NOT NULL,

也可能存在其他问题,但这些都会导致查询失败。

关于php - 数据库查询失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703091/

相关文章:

php - 使用echo在php中输出javascript

php - 如何使用 PHP 将 MySQL 数据库备份到电子邮件

php - 删除父级以及子级子级中的数据时,Laravel 外键约束错误

php - 数据库可以通过检查日期列自动删除记录

javascript - Slim PHP 框架使用 mySQL 注册系统

sql - 为什么在使用 regexp_replace 时每个字符前后都会出现空格?

php - 使用 docker、nginx、php-fpm 提供静态文件

mysql - 有什么方法可以显示 MySQL 表锁定历史记录

sql - SQL查询确定状态?

sql - TSQL - 替换或删除两个不同字符串之间的字符串,多次在整个列的字段中