Php - 将数据库的值与Android应用程序发送的值进行比较的代码

问题描述:

更新: -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响应仅 –

我已经解决了这个问题,我只是改变了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); 
?>