2017-05-06 7 views
0

データベースへの接続を作成しています。フェッチを呼び出して、結果をjsonでエコーします。しかし、select文に特定の列を含めると...何も戻ってこない。PHP PDO Fetchは、特定の列を含むときに0の結果を返します。

これは私のコードがどのように見えるかです:

$data = array(); 
$page = 0; 
$perPage = 30; 
$offset = $page * $perPage; 

$query = "SELECT wp.ID, 
      REPLACE(wp.post_title, 'Episode - ','') AS header, 
      CASE WHEN img.guid IS NULL THEN meta_img.meta_value ELSE img.guid END AS image_url, 
      wp.post_excerpt AS about, **INCLUDING THIS** 
      lessons.meta_value as lessons, **OR THIS** 
      title.meta_value AS detail **OR THIS. BRINGS BACK NO RESULTS** 
      FROM wp_posts wp 
      INNER JOIN wp_postmeta title on title.post_id = wp.id and title.meta_key = 'academy_title' 
      INNER JOIN wp_postmeta lessons on lessons.post_id = wp.id and lessons.meta_key = 'academy_lessons' 
      LEFT JOIN wp_postmeta meta_img on meta_img.post_id = wp.id and meta_img.meta_key = 'image' 
      LEFT JOIN wp_postmeta meta on meta.post_id = wp.id and meta.meta_key = '_thumbnail_id' 
      LEFT JOIN wp_posts img on img.id = meta.meta_value 
      WHERE wp.post_title LIKE 'Episode%' AND wp.post_status = 'publish' 
      ORDER BY wp.post_date DESC 
      LIMIT $offset, $perPage"; 

     $result = $this->db->query($query); 

     while ($row = $result->fetch()) { 
       $data[] = $row; 
     }  
     echo json_encode($data); 

が、私は他の単純なクエリが動作するので、私の接続が正常に動作していることを知っているが、何らかの理由で、私は、クエリの最後の3列が含まれている場合(about, lessons, detail)結果が戻って何ももたらしません...意味がありません

私はこれに新しいので、いくつかの構文が受け入れられないかもしれないと思ったのですか?しかし、事はそれが基本的な列を実際のロジックでないものとの結果を返さないということです...

EDIT:フィールドでSUBSTR(wp.post_excerpt, 1, 4) as aboutをやって、そのサイズを制限する場合

...それが動作します。これをどうやって解決するのですか?

+0

変更'、 'のようなもの、 'と試してみてください。 'var_dump($ result);'もチェックしてください。 –

+0

@AlivetoDie保護されたキーワードの場合、既にエイリアスを変更しようとしていますが、動作しませんでした。 var_dump($ result)はクエリを返します... whileループのvar_dump($ row)はすべての結果を返します... – Walker

+0

'var_dump($ row)'にデータがありますか?それから何が問題なの? 'echo json_encode($ data);'何も印刷しませんか? –

答えて

0

phpAdminまたは他のクエリを確認し、それらの列が存在し、よく書かれていることを確認してください。

UPDATEがしよう

$data = array();  
while ($row = $result->fetch()) { 
       $data[] = $row; 
     } 

多分成文化、特別な文字について問題がある2 UPDATE、my_lessonsとしてlessons.meta_value `への教訓としてlessons.meta_valueその

+0

phpMyAdminで完全に動作します。スリムフレームワークでPHP APIを実装しているので、機能の少ないクエリをすべて、少なくとも組織化されたAPIからコピーしています。 – Walker

+0

$行=== false? –

+0

私はちょうど 'var_dump($ row)'を行い、レコードには何が表示されますか? – Walker

関連する問題