2016-09-24 4 views
2

私はMySQLデータベースを使用するアプリケーションを構築しています。私はgps座標と文字列と整数も送信しようとしています..座標送信が正常に動作しています..問題は文字列と整数データベーステーブルの更新に関する問題

これは私のPHPスクリプトです:

<?php 
$con = mysqli_connect("*****", "*****", "******", "*******"); 

$lat = $_POST["lat"]; 
$long = $_POST["long"]; 
$id= $_POST["id"]; 
$pickup= $_POST["pickup"]; 
$destination = $_POST["destination"]; 
$seats= $_POST["seats"]; 

$statement = mysqli_prepare($con,"Update user SET lat=$lat,long=$long , pickup=$pickup,destination=$destination,seats=$seats WHERE user_id=$id"); 

mysqli_stmt_execute($statement); 

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

echo json_encode($response);?> 

これは私のテーブル構造である:

database table

と私は、問題は、複写(lat、long)と文字列(ピックアップ、宛先)を送信するために使用しているコードの間に違いがないためと考えていない..とにかくこれは私のアプリケーションコードの一部です:

public void send_gps(String pickup,String destination,int seats,int id, double lat,double long) { 


    // Response received from the server 
    Response.Listener<String> responseListener = new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonResponse = new JSONObject(response); 
       boolean success = jsonResponse.getBoolean("success"); 

      } catch (JSONException e) { 
       e.printStackTrace(); 
       AlertDialog.Builder builder2 = new AlertDialog.Builder(MapsActivity.this); 
       builder2.setMessage("error") 
         .setNegativeButton("Retry", null) 
         .create() 
         .show(); 
      } 
     } 
    }; 

    gps_request request = new gps_request(pickup,destination,Integer.toString(seats),Integer.toString(id),Double.toString(lat),Double.toString(long), responseListener); 
    RequestQueue queue = Volley.newRequestQueue(this); 
    queue.add(request); 

} 

、これはこのような何かにあなたのクエリを変更してみてください、文字列要求に

public class gps_request extends StringRequest { 
private static final String LOGIN_REQUEST_URL = "**********************"; 
private Map<String, String> params; 

public gps_request(String pickup,String destination,String seats,String id,String lat, String long, Response.Listener<String> listener) { 
    super(Method.POST, LOGIN_REQUEST_URL, listener, null); 
    params = new HashMap<>(); 

    params.put("lat", lat); 
    params.put("long", long); 
    params.put("id", id); 
    params.put("pickup", pickup); 
    params.put("destination", destination); 
    params.put("seats", seats); 

} 

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

問題は、クエリで引用符を使用する方法がわからないことです。 –

+0

準備文を使用しています。しかし、なぜあなたはそれをパラメータとして渡していますか?パラメータをバインドするには[mysqli_stmt_bind_param() '](http://php.net/manual/en/mysqli-stmt.bind-param.php)関数を使用してください。 –

+0

2段目の '' SQLインジェクション ' – Drew

答えて

0

を拡張するクラスです - 注意:私はあなたの変数の型の「i」と「S」で推測。

$statement = mysqli_prepare($con,"UPDATE user SET lat=?, long=?, pickup=?, destination=?, seats=? WHERE user_id=?"); 

$statement->bind_param("iisssi", $lat, $long, $pickup, $destination, $seats, $id); 

mysqli_stmt_execute($statement); 
+1

で表示してくれてありがとうございます。 –

関連する問題