2014-07-23 2 views
-1

원격 mysql 데이터베이스에서 데이터를 가져 와서 json 으로 가져 오기를 시도하고 있습니다. 연결은 정상이며 문제는 최종적으로 json에서 반향하는 것이 정상이 아니라는 것입니다. 이것이 내 PHP 코드입니다.json에 mysql 쿼리 결과를 가져 오기

<?php 

require("config.inc.php"); 
$query = "Select * FROM comments"; 
$res = mysql_query($query); 
$rows = mysql_fetch_assoc($res); 

if ($rows) { 
    $response["success"] = 1; 
    $response["message"] = "Post Available!"; 
    $response["posts"] = array(); 
    foreach ($rows as $row) { 
     $post    = array(); 
     $post["username"] = $row["username"]; 
     $post["title"] = $row["title"]; 
     $post["message"] = $row["message"]; 

     //update our repsonse JSON data 
     array_push($response["posts"], $post); 
    } 

    // echoing JSON response 
    echo json_encode($response); 

이 페이지에 반향 결과입니다

post_id  username title   message 
1   reda  test title 2 test message xxx 
2   reda2  title 2   message 2 
01 :

{"success":1,"message":"Post Available!","posts":[{"username":"1","title":"1","message":"1"},{"username":"r","title":"r","message":"r"},{"username":"t","title":"t","message":"t"},{"username":"t","title":"t","message":"t"}]} 

내 데이터베이스 테이블 "코멘트"이러한 데이터를 포함하는 동안

도와주세요 감사합니다. 단일 배열, 다차원 배열 루프를 얻기 위해 노력하고있다

foreach ($rows as $row) { 

+0

이상한 점은 json이 반환 한 데이터입니다. 데이터베이스의 테이블에있는 데이터와 일치하지 않습니다. – user3870679

+0

{ "성공": 1, "메시지": "게시 가능", "게시물": [{ " "reda", "title": "test title 2", "message": "test message xxx"}, { "username": "reda2", "title": "title 2", "message" "message 2"}]} 이것은 현재 결과 대신에 결과가되어야합니다 – user3870679

답변

1

당신은 그래서 당신이 할 때

$rows = mysql_fetch_assoc($res); 

를 사용하여 1 행/배열을 반환한다. 따라서 각 posts 값은 반환 된 행/배열의 각 열의 첫 번째 문자입니다.

$rows 어레이를 구축해야합니다. 당신은 제대로 MySQL의에서 설정하여 결과를 판독하지 않을

$rows = array(); 
while($result = mysql_fetch_assoc($res)){ 
    $rows[] = $result; 
} 
+0

그것은 당신이 내 친구에게 고맙다 고 말한 것처럼 작동합니다 – user3870679

1

$rows = mysql_fetch_assoc($res); 

을 변경해보십시오. 첫 번째 행을 가져 와서 전체 결과를 처리합니다. 루프마다 차례대로 각 행을 검색해야합니다.

이 시도 :

$query = "Select * FROM comments"; 
$res = mysql_query($query) or die(mysql_error()); 

if (mysql_num_rows($res)!= 0) { 
    $response = array(); 
    $response["success"] = 1; 
    $response["message"] = "Post Available!"; 
    $response["posts"] = array(); 
    while ($row = mysql_fetch_assoc($res)) { 
     $post    = array(); 
     $post["username"] = $row["username"]; 
     $post["title"] = $row["title"]; 
     $post["message"] = $row["message"]; 

     //update our repsonse JSON data 
     array_push($response["posts"], $post); 
    } 
} 
// echoing JSON response 
echo json_encode($response); 

참고 :이 코드를 테스트하지 않았습니다.

두 번째 참고 - 새 코드에는 mysql_*()을 사용해서는 안됩니다. 더 이상 사용되지 않습니다. Swicth는 mysqli_*() 또는 PDO입니다.

+0

감사합니다 – user3870679