php - 仅当数据存在于另一个 PHP 中时如何在表中插入数据

标签 php mysql mysqli

我想知道如何仅当其中一个参数也存在于另一个表中时才能将一行插入表中。

我有两个表,Goals [goal_id, username...] Activities[username, goal_id, activity_id..]

具有 1-many carnality,因此新事件必须具有目标 ID。我已经设置了一个 REST 服务,问题是当前用户可以插入一个连接到不属于他们的目标的事件,所以我正在寻找一种方法来 INSERT 只有 <提供的 em>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.";
        }
    }
}
}

最佳答案

这应该是一个简单的连接语句,用于查找该用户名的记录是否存在于另一个表中。试试下面的查询

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

关于php - 仅当数据存在于另一个 PHP 中时如何在表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26486343/

相关文章:

php - WAMP Stack PHP "Fatal error: Class ' 找不到 SoapClient”

mysql - 无法在 web2py 中创建新数据库...语法错误

PHP MySQL 请求错误 : Parse error: syntax error, 意外 '%'

PHP MySQL 查询在某些情况下失败?

php - 有没有办法在 PHP 中执行 "forward trace"?

php - undefined variable argc PHP

php - 即使返回错误,ajax 也始终运行成功

php - 带有 WHERE 子句的 MySQL 语法错误

PHP 无法从 mysql 查询获取列名

php - 我无法在 php 中设置主页面/详细信息页面