2017-10-20 65 views
0

更新: -Php - 將數據庫的值與Android應用程序發送的值進行比較的代碼

如果表中不存在相同的ID,則將數據保存到表中。

這是我得到我的迴應

Log.i使用該響應( 「響應」, 「響應:」 +響應);

Response: response: <br /> 
                    <b>Notice</b>: Undefined variable: id in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>31</b><br /> 
                    <br /> 
                    <b>Notice</b>: Undefined variable: connect in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>32</b><br /> 
                    <br /> 
                    <b>Warning</b>: mysqli_query() expects parameter 1 to be mysqli, null given in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>32</b><br /> 
                    <br /> 
                    <b>Warning</b>: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>32</b><br /> 
                    <br /> 
                    <b>Notice</b>: Undefined variable: time in <b>/storage/ssd2/319/3199319/public_html/leaderboard.php</b> on line <b>33</b><br /> 
                    {"success":false} 

我創建了一個PHP代碼,以驗證數據庫中有ID已經存在與否。如果它存在,那麼我將時間值與我發送給它的值進行比較,否則將值保存到表中。 如果我發送的值小於數據庫中的值,則更新其他表,否則請求被取消。但我得到錯誤。請幫忙。

我的PHP代碼: -

<?php 
$connect = mysqli_connect("localhost", "id3199319_s", "pass", "id3199319_k"); 
$name = $_POST["name"]; 
$time = $_POST["time"]; 
$id = $_POST["id"]; 

function registerUser() { 
    global $connect, $name, $time, $id; 
    $statement = mysqli_prepare($connect, "INSERT INTO leaderboard (name, time, id) VALUES (?, ?, ?)"); 
    mysqli_stmt_bind_param($statement, "sis", $name, $time, $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_close($statement);  
} 

function nameAvailable() { 
    global $connect, $id; 
    $statement = mysqli_prepare($connect, "SELECT * FROM leaderboard WHERE id = ?"); 
    mysqli_stmt_bind_param($statement, "s", $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_store_result($statement); 
    $count = mysqli_stmt_num_rows($statement); 
    mysqli_stmt_close($statement); 
    if ($count < 1){ 
     return true; 
    }else {   
     return false; 
    } 
} 

function updateTime(){ 
    $sql = "SELECT time from leaderboard WHERE id = $id;"; 
    $res = mysqli_fetch_assoc(mysqli_query($connect, $sql)); 
    if($time < $res['time']){ 
     $sql = "UPDATE table leaderboard SET time = $time where id=$id"; 
     $res = mysqli_query($connect, $sql); 
     if(!$res){ 
      die("Query not executed " . mysqli_error($connect)); 
      $response["success"] = false; 
      } else { 
        $response["success"] = true; 
     } 
    } 
} 

$response = array(); 
$response["success"] = false; 

if (nameAvailable()){ 
    registerUser(); 
    $response["success"] = true; 
     } else { 
     updateTime(); 
     } 

echo json_encode($response); 
?> 

凌空請求

public void winner_registration(){ 

    String tm = timer_box.getText().toString(); 
    String[] tmm = tm.split(":"); 

    int hr = Integer.parseInt(tmm[0]); 
    int hr_sec = hr*60*60; 
    int minn = Integer.parseInt(tmm[1]); 
    int minn_sec = minn*60; 
    int secc = Integer.parseInt(tmm[2]); 

    int totalTime = hr_sec+minn_sec+secc; 
    String myName = Profile.getCurrentProfile().getName(); 
    String id = Profile.getCurrentProfile().getId(); 

    Response.Listener<String> response = new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonResponse = new JSONObject(response); 
       boolean success = jsonResponse.getBoolean("success"); 
       if (success){ 
        Toast.makeText(Play.this, "Details Submitted To LeaderBoard", Toast.LENGTH_SHORT).show(); 
       } else{ 
        Toast.makeText(Play.this, "Something Went Wrong! Score not Submitted", Toast.LENGTH_SHORT).show(); 
       } 

       Handler h = new Handler(); 
       h.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         score_submit_progressdialog.dismiss(); 
         startActivity(new Intent(Play.this, Home.class)); 
         finish(); 
        } 
       }, 50); 

      } catch (JSONException e) { 
       Toast.makeText(Play.this, "Something Went Wrong :"+e, Toast.LENGTH_SHORT).show(); 
       e.printStackTrace(); 
      } 
     } 
    }; 

    RegisterWinner registerRequest = new RegisterWinner(myName,totalTime,id, response); 
    RequestQueue queue = Volley.newRequestQueue(Play.this); 
    queue.add(registerRequest); 
} 

RegisterWinner

公共類RegisterWinner擴展StringRequest {

public static final String REGISTER_REQUEST_URL = "URL"; 
private Map<String, String> params; 

public RegisterWinner(String name, int totalTime, String id, Response.Listener<String> listener){ 
    super(Method.POST, REGISTER_REQUEST_URL, listener , null); 
    params = new HashMap<>(); 
    params.put("name", name); 
    params.put("time", String.valueOf(totalTime)); 
    params.put("id", id); 
} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 
} 

這裏是我得到的錯誤時,該表需要更新

enter image description here

+0

你可以發佈你在'public void onResponse(String response)'中得到的響應嗎? –

+0

您從PHP返回html,並嘗試將其解析爲json。記錄結果,你會看到。 – greenapps

+0

我得到一個JSON響應僅 –

回答

0

我已經解決了這個問題,我只是改變了PHP代碼,它完美地工作。 這裏的更新代碼: -

<?php 
$connect = mysqli_connect("localhost", "db", "pass", "host"); 
$name = $_POST["name"]; 
$time = $_POST["time"]; 
$id = $_POST["id"]; 
function registerUser() { 
global $connect, $name, $time, $id; 
$statement = mysqli_prepare($connect, "INSERT INTO leaderboard (name, time, id) VALUES (?, ?, ?)"); 
    mysqli_stmt_bind_param($statement, "sis", $name, $time, $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_close($statement);  
} 
function nameAvailable() { 
    global $connect, $id; 
    $statement = mysqli_prepare($connect, "SELECT * FROM leaderboard WHERE id = ?"); 
    mysqli_stmt_bind_param($statement, "s", $id); 
    mysqli_stmt_execute($statement); 
    mysqli_stmt_store_result($statement); 
    $count = mysqli_stmt_num_rows($statement); 
    mysqli_stmt_close($statement); 
    if ($count < 1){ 
     return true; 
    }else {   
     return false; 
    } 
} 
$response = array(); 
$response["success"] = false; 
if (nameAvailable()){ 
    registerUser(); 
    $response["success"] = true; 
     } else { 
     $sql = "SELECT time from leaderboard WHERE id = $id;"; 
$res = mysqli_fetch_assoc(mysqli_query($connect, $sql)); 
if($time < $res['time']){ 
     $sql = "UPDATE leaderboard SET time = $time where id=$id"; 
     $res = mysqli_query($connect, $sql); 
     if(!$res){ 
      die("Query not executed " . mysqli_error($connect)); 
      $response["success"] = false; 
      } else { 
        $response["success"] = true; 
     } 
    } 
     } 
    echo json_encode($response); 
?> 
相關問題