2015-08-11 2 views
2

Я делаю приложение для Android с использованием MySQL и PHP для регистрации, а моя база данных MySQL не обновляется. Я добираюсь до php-методов, но не успешно обновляю таблицу. Вот важный фрагмент кода Java:Невозможно обновить MySQL с помощью PHP

public void updateGroupName() { 
     submitButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       EditText groupName = (EditText) dialog.findViewById(R.id.group); 
       final String name = groupName.getText().toString(); 
       System.out.println("Name of group is: " + name); 
       updateUser(name); 
         System.out.println("Trying to update user group"); 
         if (!name.isEmpty()) { 

          //add to sqlite database 
          updateUser(name); 
         } else { 
          Toast.makeText(getApplicationContext(), 
            "Please enter your details!", Toast.LENGTH_LONG) 
            .show(); 
         } 
         String tag_string_req = "req_update"; 

         //showDialog(); 

         StringRequest strReq = new StringRequest(Request.Method.POST, 
           AppConfig.URL_REGISTER, new Response.Listener<String>() { 

          @Override 
          public void onResponse(String response) { 
           Log.d(TAG, "Update Response: " + response.toString()); 
           //hideDialog(); 

           try { 
            JSONObject jObj = new JSONObject(response); 
            boolean error = jObj.getBoolean("error"); 
            if (!error) { 
             System.out.println("User group successfully updated in mysql"); 
             // User successfully stored in MySQL 
            } else { 
             System.out.println("The use group failed to update"); 
             // Error occurred in registration. Get the error 
             // message 
             String errorMsg = jObj.getString("error_msg"); 
             Toast.makeText(getApplicationContext(), 
               errorMsg, Toast.LENGTH_LONG).show(); 
            } 
           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 

          } 
         }, new Response.ErrorListener() { 

          @Override 
          public void onErrorResponse(VolleyError error) { 
           Log.e(TAG, "Update Error: " + error.getMessage()); 
           Toast.makeText(getApplicationContext(), 
             error.getMessage(), Toast.LENGTH_LONG).show(); 
//    hideDialog(); 
          } 
         }) { 
          String email = db.getUserDetails().get("email"); 
          @Override 
          protected Map<String, String> getParams() { 
           System.out.println("trying to return params"); 
           // Posting params to register url 
           Map<String, String> params = new HashMap<>(); 
           params.put("tag", "update"); 
           params.put("user_group", name); 
           params.put("email", email); 
           return params; 
          } 
         }; 
         System.out.println("updating group to mysql database"); 
         // Adding request to request queue 
         AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 
//    System.out.println("here1"); 
//    System.out.println("user group: " + db.getUserDetails().get("user_group")); 
       dialog.dismiss(); 
        } 
     }); 
     //System.out.println("here2"); 
    } 

Вот важные части моего PHP код:

else if ($tag == "update") { 
     $user_group = $_POST['user_group']; 
     $uid = $_POST['email']; 
     //update user 
     $user = $db->updateUser($user_group, $email); 
     if ($user) { 
      $response["error"] = FALSE; 
      $response["uid"] = $user["unique_id"]; 
      $response["user"]["name"] = $user["name"]; 
      $response["user"]["email"] = $user["email"]; 
      $response["user"]["user_group"] = ["user"]["user_group"]; 
      $response["user"]["created_at"] = $user["created_at"]; 
      $response["user"]["updated_at"] = $user["updated_at"]; 
      echo "The update User function was called and a user was returned"; 
      echo json_encode($response); 
     } else { 
      // user failed to store 
      $response["error"] = TRUE; 
      $response["error_msg"] = "Error occured in Updating user group"; 
      echo json_encode($response); 
     } 

public function updateUser($user_group, $email) { 
     $result = mysql_query("UPDATE users SET user_group = '$user_group' WHERE email = '$email'"); 
     if ($result) { 
      // get user details 
      $uid = mysql_insert_id(); // last inserted id 
      $result = mysql_query("SELECT * FROM users WHERE uid = $uid"); 
      // return user details 
      return mysql_fetch_array($result); 
     } else { 
      return false; 
     } 
    } 
+0

MySQL запрос на обновление не устанавливает mysql_insert_id(). Использовать mysqli, поскольку mysql устарел. –

+0

Можете ли вы рассказать о том, что вы имеете в виду? Является ли mysqli функцией? – clue11

+0

mysql_insert_id() отлично работает для моих функций регистрации и входа в систему. – clue11

ответ

0

Вы передаете $email в ваш метод updateUser но адрес электронной почты хранится в $uid.

Пожалуйста, измените

$user = $db->updateUser($user_group, $email); 

в

$user = $db->updateUser($user_group, $uid); 
+0

Что вы имеете в виду, адрес электронной почты хранится в $ uid? Почему я не могу передать такой параметр, как $ email - он работает, когда я передаю его в другие мои функции, такие как регистрация и логин. – clue11

+0

Вы сохраняете почтовый адрес в '$ uid':' $ uid = $ _POST ['email']; 'В вашем ответе нет части, где инициализируется' $ email'. Вот почему я сказал вам использовать '$ uid' вместо' $ email' ;-) –

+0

Я имею в виду 'В вашем вопросе ...' вместо 'В вашем ответе ...'. –