我想知道只有当其中一个参数也存在于另一个表中时,我才能在表中插入一行。
我有两张桌子,Goals [goal_id, username...] Activities[username, goal_id, activity_id..]
。
有一个多人的肉体,所以新的活动必须有目标ID。我已经设置了一个REST服务,问题是目前用户可以插入一个与不属于他们的目标相关的活动,所以我只想找到INSERT
的方法。提供的> goal_id 属于user_goal
表格中的
if (isset($_POST['activity'])) {
$title = $_POST['title'];
$description = $_POST['description'];
$connected_goal = $_POST['connected_goal'];
if (!isset($_POST['title']) || !isset($_POST['description']) || !isset($_POST['connected_goal'])) {
echo "Missing fields in the request! New activities MUST contain; title, description AND connected_goal";
}
else {
if ($stmt = $mysqli->prepare("insert into user_activity(username,title,description,goal_id) values(?,?,?,?)")) {
$stmt->bind_param("sssi", $apiusername, $title, $description, $connected_goal);
$stmt->execute();
$stmt->close();
echo "ACTIVITY ACCEPTED";
}
else {
echo "POST Request failed, please check all parameters against documentation.";
}
}
}
}
答案 0 :(得分:1)
这应该是一个简单的连接语句,用于查找该用户名的另一个表中是否存在记录。请尝试以下查询
SELECT table1.username, table1.goal_id, COUNT(table2.username) as total FROM table1
LEFT JOIN table2 ON table2.username=table1.username
GROUP BY table1.username
HAVING total >=1
答案 1 :(得分:0)
在这种情况下,您应该在user_activity表中添加外键约束。类似以下查询的内容将添加约束。
ALTER TABLE user_activity ADD CONSTRAINT fk_goal_id FOREIGN KEY (goal_id) references user_goals(goal_id);