使用 php mysqli 从两个连接的表中获取数据

Posted

技术标签:

【中文标题】使用 php mysqli 从两个连接的表中获取数据【英文标题】:Get data from two connected table with php mysqli 【发布时间】:2014-12-08 17:20:13 【问题描述】:

我有两个连接的表 - daysuser_days

天数:

USER_DAYS:

我需要如何检查 user_days 中是否有今天 (unix_date) 记录,如果有,那么我需要在此之后获取 day_id 以从表 DAYS 中以 day_id 为 ID 获取数据...

我写:

 public function getDay($user_id) 
        $stmt = $this->conn->prepare("SELECT d.id, d.day, d.status, d.created_at, d.dayDate from days d, user_days ud WHERE d.id = ? AND ud.dayDate = d.dayDate AND ud.user_id = ?");
        $t=time();
        $dayDate = date("Y-m-d",$t);
        $stmt->bind_param("si", $dayDate, $user_id);
        if ($stmt->execute()) 
            $res = array();
            $stmt->bind_result($id, $day, $status, $created_at, $dayDate);
            // TODO
            // $task = $stmt->get_result()->fetch_assoc();
            $stmt->fetch();
            $res["id"] = $id;
            $res["task"] = $task;
            $res["status"] = $status;
            $res["created_at"] = $created_at;
            $res["dayDate"] = $dayDate;
            $stmt->close();
            return $res;
         else 
            return NULL;
        

在 index.php 的另一边,我有不太重要的代码:

$app->get('/days', 'authenticate', function() 
            global $user_id;
            $response = array();
            $db = new DbHandler();

            // fetch task
            $result = $db->getDay($user_id);

            if ($result != NULL) 
                $response["error"] = false;
                $response["id"] = $result["id"];
                $response["day"] = $result["day"];
                $response["status"] = $result["status"];
                $response["createdAt"] = $result["created_at"];
                $response["dayDate"] = $result["dayDate"];
                echoRespnse(200, $response);
             else 
                $response["error"] = true;
                $response["message"] = "The requested resource doesn't exists";
                echoRespnse(404, $response);
            
        );

我只是得到这个不正确的输出:

 Object error: false, id: 0, day: null, status: 0, createdAt: null

我的 QUERY 有什么问题,我认为 QUERY 有问题,但我可以按小时解决...

【问题讨论】:

dev.mysql.com/doc/refman/5.0/en/join.html 是你的朋友... 【参考方案1】:

在 getday() 中,我认为您应该将 $res["task"] = $task; 替换为 $res["day"]=$day

【讨论】:

好的,但这不是问题:我通过更改 QUERY: WHERE d.dayDate= 来解决这个问题? AND ud.dayDate = d.dayDate AND ud.user_id = ?");

以上是关于使用 php mysqli 从两个连接的表中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP MySQLi While 循环

从php向表中插入行时如何修复我的MySQLi数据库

如何使用 SQL 和 Python 连接两个具有日期条件的表?

我想从 2 个不同的表中进行连接查询,我想从两个表中输出

单个 mysqli 查询语句来获取总行数和限制

加密/匿名用户健康数据 php/mySQLi