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