2016-10-25 3 views
0

私は、取得したデータを返さなければならないPHPファイルの関数を呼び出すIOSアプリケーションから関数を呼び出していますが、新しいパートを追加したのでreturn nilです私の質問。MYSQLクエリとPHP - IOSアプリケーションにnilを返すクエリ

私の新しいクエリは自分のDB上のMYSQLテスターサービスで動作していますが、間違いなく私のアプリケーションではnilを返しています。 (記事を取得するための私の前のクエリだった、あなたは私がコメントアウトクエリを持って見ることができますとして

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; 


    } 

:ここ

は、私はそれがすべての私のPHPファイルで設定した方法ですそれは素晴らしかった)。しかし、今私はすべての画像のための "のようなカウント"を取得しようとしている、私のアプリでは何も戻ってきません...

誰かが見える場合は、私に教えてください!

ありがとうございます!

+0

ようにしたいですhttp://php.net/manual/en/pdo.error- handling.php)。私は実行されているSQLがエラーを投げていると思うし、あなたはそれをトラップしていません。なぜレコードは返されないのですか? 'type =" "'は私の心の中では誤りと思われます。 'type is null'または' type = '' '空集合で' type = "" 'ではないか、' type = 'somevalue''またはタイプの値がまったくないようにします。 (Where節を完全になくしてください)私はそこから始めるでしょう(where節を削除してください)。結果が得られたらwhere節で問題があることを知っています。 – xQbert

+0

@xQbertスポットをオンにして、答えとして投稿してください...私は1時間と1/2の間それを見ることができなかったと信じられません! –

答えて

0

エラーをトラップする必要があります。私は実行されているSQLがエラーを投げていると思うし、あなたはそれをトラップしていません。なぜレコードは返されないのですか? type = ""は私の心に間違いのようです。 type is nullまたはtype = ''(空のセット)が必要ですが、type = ""ではなく、type = 'somevalue'を入力するか、タイプに値を指定しないでください。 (完全にwhere句を排除する)私はそこに開始(where句を排除する)、あなたは結果を取得する場合、あなたは、where句

+0

コメントについてのこの質問を投稿し、あなたが言いました解決策は私が受け取った答えよりももっと簡単でよく見えました! http://stackoverflow.com/questions/40268501/mysql-query-get-latest-comment-related-to-the-post –

1

これで問題がある知っているだろう。全くグラグラだ

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

が参加します調子。正確に同じIDを共有している投稿やユーザーを欲しがります。これは起こりそうにないでしょう。

あなたの実際のテーブル構造についてはアイデアが、あなたは、おそらくあなたは、[エラーのトラップ](に必要なものより

posts.user_id = users.id 
... 
where users.id = $id