Php 为什么MySQL中有空记录?

Php 为什么MySQL中有空记录?,php,mysql,database,insert,Php,Mysql,Database,Insert,在我们的系统中,他们要求我们添加研究兴趣,但当我们添加新用户时,我们应该为他/她分配兴趣。它正在成功地添加到数据库表中,我们遇到了一个问题,即我们在interest_id数据库表中获得了零记录,为什么 此处,所有研究兴趣均已成功添加到数据库: 如下图所示,当管理员添加新用户时,他会选择多个兴趣并将其分配给用户: 以下是用户配置文件的屏幕截图,您可以看到管理员分配给新用户的兴趣: 问题是它不会将兴趣id写入数据库 下面可以看到代码和SQL表: <p> <label&g

在我们的系统中,他们要求我们添加研究兴趣,但当我们添加新用户时,我们应该为他/她分配兴趣。它正在成功地添加到数据库表中,我们遇到了一个问题,即我们在interest_id数据库表中获得了零记录,为什么

此处,所有研究兴趣均已成功添加到数据库:

如下图所示,当管理员添加新用户时,他会选择多个兴趣并将其分配给用户:

以下是用户配置文件的屏幕截图,您可以看到管理员分配给新用户的兴趣:

问题是它不会将兴趣id写入数据库

下面可以看到代码和SQL表:

<p>
      <label>Research Areas</label>
      <select name="interest_id[]" class="small-input" multiple>
        <?php 
            $query = "SELECT * FROM research_interest ORDER BY name ASC";
            $result = mysqli_query($link, $query);
            while($row = mysqli_fetch_object($result))
            {
        ?>
            <option value="<?php echo $row->id; ?>"><?php echo $row->name; ?></option>
        <?php
            }
        ?>
      </select>
    </p>
以下是MySQL的代码:

if(isset($_POST['action'])) {
    switch($_POST['action']) {

        case 'user_add':
            $user_id            = mysqli_real_escape_string($link,$_POST['user_id']);
            $email              = mysqli_real_escape_string($link,$_POST['email']);
            $password           = rand_pass(8);
            $title_id           = intval($_POST['title_id']);
            $user_type_id       = intval($_POST['usertype_id']);
            $department_id      = intval($_POST['department_id']);
            $view_publication   = mysqli_real_escape_string($link,$_POST['publication']);
            $referee            = mysqli_real_escape_string($link,$_POST['referee']);
            $gender             = mysqli_real_escape_string($link,$_POST['gender']);
            $creation_date      = date('Y.m.d');

            //Interest
            if(!empty($_POST['interest_id']) && is_array($_POST['interest_id'])) {
                foreach ($_POST['interest_id'] as $interest)
                    {
                        $query = "INSERT INTO user_interest (user_id, interest_id)
                        VALUES  ('$user_id', '$interest')";
                        $result = mysqli_query($link,$query);
                    }
            }

            //SQL Query
            $query = "INSERT INTO user (user_id, email, title, user_type_id, department_id, referee, gender, password, view_publication, creation_date)
                        VALUES  ('$user_id', '$email', '$title_id', '$user_type_id', '$department_id', '$referee', '$gender', '$password', '$view_publication', '$creation_date')";
            $result = mysqli_query($link,$query);

            echo '<script type="text/javascript">';
            echo 'window.location = "mail.php?action=user_mail&user_id='.$user_id.'"';
            echo '</script>';
        break;

    }
}
这是一个用户兴趣表,显示这三个研究ID分配给用户1

但在这里,它显示兴趣id为零,它不显示添加到用户1的研究兴趣id


在用户表的Insert查询中未包含兴趣id。因此,该表指定了一个默认值0。

您没有在第二个查询的兴趣id列中插入任何内容,因此它默认为零。看起来您正在尝试建立多对多关系一个用户可以有多个兴趣,一个兴趣可以属于多个用户。在这种情况下,您需要设置一个连接表来处理此关系。

您所拍摄的最后一个表的名称是什么?插入研究兴趣后,您应该检查mysqli_error$链接。它会告诉你是否出了什么问题。我的猜测是有一个外键约束,你需要在插入兴趣之前插入用户。你有两个表,在其中你将用户与兴趣关联起来?为什么?你的代码显然只更新了两个表,所以我不知道你会期望第三个表用这些数据更新。亲爱的@lagbox,表名是userDear@MikeBrant,我有3个表,一个是用户表,是最后一个,第二个是研究兴趣表,用于向系统添加新的研究兴趣,第三个表是用户兴趣表,显示了分配给用户的研究兴趣!亲爱的@lagbox,我已经插入了注释行//interest后面的内容,您可能正在运行查询。但是您的查询缺少兴趣id字段。你看不出来吗??