2014-12-12 3 views
2

Я хочу сохранить данные конкретного пользователя от mysql до sqlite. Я могу получить только одну строку конкретного пользователя.Хранение нескольких данных в Sqlite от Mysql

Вот мой код.

Войти

JSONObject jsonexercise = userFunction.exerciseItems(name); 

try { 
    System.out.println(" exe try"); 
    if (jsonexercise.getString(KEY_SUCCESS) != null) { 
     String result = json.getString(KEY_SUCCESS); 
     System.out.println(" exersise result" + result); 
     if(Integer.parseInt(result) == 1){ 
      System.out.println("exercise inside parse"); 
      JSONObject json_exercisedata = json.getJSONObject("getexercise"); 
      db.exerciseItem(json_exercisedata.getString(KEY_ENAME),json_exercisedata.getString(KEY_EXERCISE_NAME),json_exercisedata.getString(KEY_DURATION),json_exercisedata.getString(KEY_CALORIE_BURNED),json_exercisedata.getString(KEY_ECREATED_AT)); 
     } 
    } else { 
     System.out.println("no exercise item to show"); 
    } 
} 
catch (JSONException e) { 
System.out.println("no exerc item to show"); 

} 

Пользовательская функция

public JSONObject exerciseItems(String name){ 
    // Building Parameters 

    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    params.add(new BasicNameValuePair("tag", get_exetag)); 

    params.add(new BasicNameValuePair("name", name)); 
    System.out.println("in json object name" + name); 

    // getting JSON Object 
    JSONObject jsonexercise = jsonParser.getJSONFromUrl(insertURL, params); 
    // return json 
    return jsonexercise; 
} 

dbhandler

public void exerciseItem(String name, String exercisename,String duration, String calorieburned, String created_at) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, name); // Name 
    System.out.println("in db handler insert user the name is" + name); 
    values.put(KEY_EXERCISENAME, exercisename); // Email 
    values.put(KEY_DURATION, duration); 
    values.put(KEY_CALORIE_BURNED, calorieburned); 
    values.put(KEY_CREATED_AT, created_at); // Created At 
    // Inserting Row 
    db.insert(EXERCISE_ITEM, null, values); 
    db.close(); // Closing database connection 
} 

PHP

public function getExeciseitems($name) { 
    $result = mysql_query("SELECT name,exercisename,duration,calorieburned,created_at FROM exercisedata WHERE name = '$name'") or die(mysql_error()); 
    // check for result 
    $no_of_rows = mysql_num_rows($result); 
    if ($no_of_rows > 0) { 
     $result = mysql_fetch_array($result); 
     return $result; 
    } else { 
     // user not found 
     return false; 
    } 
} 
+0

Таким образом, вы получили ваш пользователя от MySQL, проблема? –

+0

У меня есть более 10 строк в mysql конкретного пользователя. Я могу видеть только один из ответов json – pratz9999

ответ

1
if ($no_of_rows > 0) { 
      $result = mysql_fetch_array($result); 

       return $result; 

     } else { 
      // user not found 
      return false; 
     } 

не работает, потому что у вас есть более чем одна запись извлечена. Вам нужно петли, как это:

if ($no_of_rows > 0) { 
while ($row = mysql_fetch_array($result)){ 
$result[] = $row; 
} 
return $result; 
}else { 
       // user not found 
       return false; 
      } 

код не тестировался.

Edit: чтобы избежать этой ошибки по этой ссылке PHP - cannot use a scalar as an array warning Say использовать:

if ($no_of_rows > 0) { 
    $i = 0; 
    $result = array(); 
    while ($row = mysql_fetch_array($result)){ 
    $result[$i] = array(); 
    $result[$i] = $row; 
    $i++; 
    } 
    return $result; 
    }else { 
        // user not found 
        return false; 
       } 

Я добавил счетчик для заполнения. ($ Я)

edit2: изменили название:

if ($no_of_rows > 0) { 
     $i = 0; 
     $result2 = array(); 
     while ($row = mysql_fetch_array($result)){ 
     $result2[$i] = array(); 
     $result2[$i] = $row; 
     $i++; 
     } 
     return $result2; 
     }else { 
         // user not found 
         return false; 
        } 
+0

PHP - нельзя использовать скаляр в качестве предупреждения массива. Но хорошо то, что он показывает мне ошибку столько времени, когда запись доступна в базе данных. Что делать сейчас ? – pratz9999

+0

@ pratz9999 Отредактировано мой код –

+0

снова та же ошибка на $ result [$ i] = $ row; $ i ++; – pratz9999

Смежные вопросы