如果数据存在于另一个PHP中,如何在表中插入数据

时间:2014-10-21 12:08:08

标签: php mysql mysqli

我想知道只有当其中一个参数也存在于另一个表中时,我才能在表中插入一行。

我有两张桌子,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.";
        }
    }
}
}

2 个答案:

答案 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);