MYSQL查询& PHP - 查询返回nil到IOS App

时间:2016-10-25 14:17:41

标签: php ios mysql

我正在调用我的IOS应用程序中的一个函数,该函数调用PHP文件中的函数然后应该返回检索到的数据,但是因为我在查询中添加了一个新部分,所以返回nil。

我的新查询在我的数据库上的MYSQL测试服务中工作,但奇怪的是在我的应用程序中返回nil。

以下是我在PHP文件中设置的所有内容:

function fetchAssocStatement($stmt)
    {
        if($stmt->num_rows>0)
        {
            $result = array();
            $md = $stmt->result_metadata();
            $params = array();
            while($field = $md->fetch_field()) {
                $params[] = &$result[$field->name];
            }
            call_user_func_array(array($stmt, 'bind_result'), $params);
            if($stmt->fetch())
                return $result;
        }

        return null;
    }

    // Select all posts + user information made by user with relevant $id
    public function selectPosts($id) {

        // declare array to store selected information
        $returnArray = array();

        /*
        // sql JOIN
        $sql = "SELECT Posts.id,
        Posts.uuid,
        Posts.caption,
        Posts.path,
        Posts.date,
        Posts.imageHeight,
        USERS.id,
        USERS.username,
        USERS.fullname,
        USERS.profileImage
        FROM Posts JOIN USERS ON
        Posts.id = $id AND USERS.id = $id ORDER by date DESC
        LIMIT 0, 5";
        */
        $sql = "SELECT Posts.id,
        Posts.uuid,
        Posts.caption,
        Posts.path,
        Posts.date,
        Posts.imageHeight,
        USERS.id,
        USERS.username,
        USERS.fullname,
        USERS.profileImage,
        coalesce(A.LikeCNT,0)
        FROM Posts INNER JOIN USERS ON 
        Posts.id = $id AND USERS.id = $id
        LEFT JOIN (SELECT COUNT(A.uuidPost) LikeCNT, A.UUIDPost
        FROM Activity A
        WHERE type = "" 
        GROUP BY A.UUIDPOST) A
        on A.UUIDPost = Posts.uuid
        ORDER BY date DESC
        LIMIT 0, 5";


      if($stmt = $this->connection->prepare($sql))
{
    $stmt->execute();
    $stmt->store_result();

    while($row = $this->fetchAssocStatement($stmt))
    {
        $returnArray[] = $row;
    }

    //$stmt->close();
}

        return $returnArray;


    }

正如您将能够看到我有一个已注释掉的查询,这是我之前获取帖子的查询(效果很好)。但是现在我正在努力为所有图像获得“相似的数量”,在我的应用程序中它没有任何回报......

如果有人能看到,请告诉我!

提前致谢!!

2 个答案:

答案 0 :(得分:1)

此:

Posts.id = $id AND USERS.id = $id

这是一个完全不稳定的加入条件。您希望碰巧分享完全相同ID的帖子和用户,这种情况极不可能发生。

不知道你的实际表结构,但你可能想要更像

的东西
posts.user_id = users.id
...
where users.id = $id

答案 1 :(得分:0)

您需要捕获错误。我认为正在执行的SQL会抛出错误并且您没有捕获它;这就是没有记录被退回的原因。我type = ""似乎是一个错误。你想要type is nulltype = ''(空集)但不想要type = ""或者你想要type = 'somevalue'或根本没有类型的值。 (完全消除where子句)我从那里开始(消除where子句),如果得到结果,那么你就知道问题出在where子句