2012-06-12 4 views
2

사용자 프로필을 MySql db에서 로컬 SQLite DB로 다운로드하려고하는 안드로이드 게임을 만들고 있습니다. 프로필을 서버에 보낼 수 있지만 검색 할 수는 없습니다.PHP + JSON을 통해 MySql에서 상태 얻기

다음은 관련 안드로이드 방법입니다. 논리 자체가 꺼져 있어도 제대로 작동하지만 문제가 없어야합니다. 여기

//LOAD PROFILE CLASS 
    userFunctions.getServerGameState(email, monster, qty, exp); 
    db.saveLocalGameSate(monster, qty, exp); 
    //FUNCTIONS CLASS 
    public JSONObject getServerGameState(String email, String monster, int qty, int exp) { 
    // Building Parameters 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair("tag", get_game_state)); 
    params.add(new BasicNameValuePair("email", email)); 
    params.add(new BasicNameValuePair("monster", monster)); 
    params.add(new BasicNameValuePair("qty", Integer.toString(qty))); 
    params.add(new BasicNameValuePair("exp", Integer.toString(exp))); 

    // getting JSON Object 
    JSONObject json = jsonParser.getJSONFromUrl(monsterURL, params); 
    // return json 
    return json; 
} 
    //DB HANDLER CLASS 
    public void saveLocalGameSate(String monster, int qty, int exp){ 

    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_MONSTER, monster); // Do they own it 
    values.put(KEY_QTY, qty); // Number of things they own 
    values.put(KEY_EXP, exp); // monster's level 

    // Inserting Row 
    db.insert(USERPROFILES_TABLE, null, values); 
    db.close(); // Closing database connection 

} 

내가 내 오류가이 두 파일 중 하나에 자리 잡고 믿는다 PHP입니다.

index.php를

else if ($tag == 'get_game_state') { 
    $email = $_POST['email']; 
    $monster = $_GET['monster']; 
    $qty = $_GET['qty']; 
    $exp = $_GET['exp']; 
    $result = $db->getGameState($email, $monster, $qty, $exp); 
     if (!empty($result)) { 

     echo json_encode($response); 
    } else { 
     $response["error"] = 1; 
     $response["error_msg"] = "Error getting game state from server"; 
     echo json_encode($response); 
    } 

functions.php 여기

public function getGameState($email, $monster, $qty, $exp) { 
    $result = mysql_query("SELECT monster AND qty AND exp WHERE email = '$email'"); 
    $row = mysql_fetch_assoc($result); 

     if (mysql_num_rows($result) > 0) { 
     $gamestate = array(); 
     $gamestate["monster"] = $result["monster"]; 
     $gamestate["qty"] = $result["qty"]; 
     $gamestate["exp"] = $result["exp"]; 

     // success 
     $response["success"] = 1; 

     // user node 
     $response["GameState"] = array(); 

     array_push($response["GameState"], $gamestate); 

     // echoing JSON response 
     echo ($response); 
     } else { 
      return false; 
     } 

내가

를 수신하고 일부 오류 메시지는
06-12 14:15:52.046: E/JSON(10577): <b>Warning</b>: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in 

    <b>/home/content/40/8529140/html/webapps/monster/include/DB_Functions.php</b> on line <b>145</b><br /> 
06-12 14:15:52.046: E/JSON(10577): <b>Warning</b>: mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>/home/content/40/8529140/html/webapps/monster/include/DB_Functions.php</b> on line <b>147</b><br /> 
06-12 14:15:52.046: E/JSON(10577): {"tag":"get_game_state","success":0,"error":1,"error_msg":"Error getting game state from server"} 
06-12 14:15:52.046: E/JSON Parser(10577): Error parsing data org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject 

는 마지막으로 말하지 마십시오 내 PHP 불안이 나는 이것을 안다 PHP는 내 장점이 아니며 나는 looki이다. 테스트 버전을 설치하여 실행하십시오. 내 개발 로드맵에 PDO이 있으며 구현 될 것입니다.

감사합니다.

UPDATE :

SQL 문을 고정 후는 (

06-12 15:03:48.216: E/JSON Parser(11427): Error parsing data org.json.JSONException: Value Array of type java.lang.String cannot be converted to JSONObject 
+0

서버 측 (PHP)에서 기대하는 "요청"구조를 공유 할 수 있습니까? –

+0

mysql_query()가 실패했다. 이유를 찾으려면 mysql_error()를 사용하십시오. – jlasarte

답변

1

$은 =는 mysql_query 결과 적절한 테이블에서 선택 "괴물과 수량을 선택하고 특급 WHERE 이메일 = '$ 이메일'"로);

You missed table name . It should be as follows : 

$result = mysql_query("SELECT monster,qty,exp from table_name WHERE email = '$email'") 
+0

SQL 문이 실패한 이유는 고맙습니다. 어리석은 실수. 하단의 내 업데이트와 관련된 오류 메시지를 지금 참조하십시오. – KDEx

+0

json의 답변을 어떻게 파싱 했습니까? – Dhruvisha

+0

전체 클래스를 게시하지 않기를 바란다 [seen-here] (http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql)와 동일한 클래스를 사용하고 있습니다. -and-sqlite /) 만약 당신이 + F "JSON PARSER CLASS"를 제어한다면 나는 정확한 클래스를 사용하고있다. – KDEx