【发布时间】:2014-04-28 18:04:43
【问题描述】:
在我们的系统中,他们要求我们添加研究兴趣,但是当我们添加新用户时,我们应该为他/她分配一个兴趣。它成功添加到数据库表中,我们遇到的问题是我们在 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;
}
}
这是一个 user_interest 表,显示这三个研究 ID 分配给用户 1
但这里显示interest_id 为零,它不显示添加到用户1 的研究兴趣的ID
【问题讨论】:
-
你画的最后一张桌子叫什么名字?
-
您应该在插入研究兴趣后检查
mysqli_error($link)。它会告诉你是否有问题。我的猜测是有一个外键约束,你需要在插入兴趣之前插入用户。 -
您有两个表可以将用户与兴趣相关联?为什么?您的代码显然只更新了两个表,所以我不知道您为什么希望用这些数据更新第三个表。
-
亲爱的@lagbox,表名是“user”
-
亲爱的@MikeBrant 我有 3 个表,其中一个 user 表是最后一个,第二个是 research_interest 表,用于向系统添加新的研究兴趣,第三个表是 user_interest,它显示了哪些研究兴趣分配给用户!