繁体   English   中英

检查数据库中的记录是否确实存在php mysqli

[英]Check record in database does exist ith php mysqli

我有一个奇怪的问题:

我有一个数据库DAYS和USER_DAYS ... DAYS: 在此处输入图片说明

USER_DAYS: 在此处输入图片说明

我有一个功能来检查今天的日期是否在user_id中的数据库USER_DAYS中是否存在,如果是,那么我从DAYS表中获取数据:(dbhanler.php)

public function getDay($user_id) {
        $stmt = $this->conn->prepare("SELECT d.id, d.day, d.status, d.created_at, d.dayDate, d.startTime, d.endTime from days d, user_days ud WHERE d.dayDate = ? 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, $startTime, $endTime);

            $stmt->fetch();
            $res["id"] = $id;
            $res["day"] = $day;
            $res["status"] = $status;
            $res["created_at"] = $created_at;
            $res["dayDate"] = $dayDate;
            $res["startTime"] = $startTime;
            $res["endTime"] = $endTime;
            $stmt->close();
            return $res;
        } else {
            return NULL;
        }
    }

的index.php

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

                $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"];
                    $response["startTime"] = $result["startTime"];
                    $response["endTime"] = $result["endTime"];

                    echoRespnse(200, $response);
                } else {
                    $response["error"] = true;
                    $response["message"] = "The requested resource doesn't exists";
                    echoRespnse(404, $response);
                }
            });

我认为我已经解决了问题,但是有些奇怪的事情:当我在USER_DAYS中没有user_id记录时,一切正常,并给我空的结果,但是如果我有user_id记录,那么给我错误的用户记录,给我最后一个用户的记录记录提交

这里有什么问题? MYSQLi查询?

错误在于表的连接。 仅在当天加入是to到m的连接,但是您需要一个唯一的字段来获得1到n的连接。

例如:USER_DAYS

  1. 来自用户A的数据,2014-12-08
  2. 用户B的数据,2014年12月8日
  3. 用户C的数据,2014年12月8日
  4. 来自用户A的数据,2014-12-09

如果执行getDate(用户B的ID),则将获得条目1、2和3。该函数将只包含一行,因此它将排在第一行(来自用户A)

按日期ID(而不是日期)加入

WHERE d.dayDate = ? AND ud.day_id = d.id AND ud.user_id = ?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM