0

ここに私のコード、私はmysql、php、androidを持っているmysqlデータベースに挿入する必要があります

1)私が抱えている問題は、phpのコードをandroid.soを使用して挿入できるように、phpに成功した結果が必要です:

2)私が使用しているテーブルには外部キーがあります: Provinces_idProvinces.

 $result = mysql_query("INSERT INTO property( Pname, P_Price,P_Desc,P_City, P_Size,P_Rooms, P_garage, P_Address, P_Long, P_Lat, Provinces_idProvinces)  
VALUES('$_POST[Pname]',$_POST[P_Price],'$_POST[P_Desc]','$_POST[P_City]','$_POST[P_Size]','$_POST[P_Rooms]',$_POST[P_garage],'$_POST[P_Address]',$_POST[P_Long],$_POST[P_Lat],$_POST[Provinces_idProvinces])");

 if ($result) {
        // successfully inserted into database
        $response["success"] = 1;
        $response["message"] = $result ;

        // echoing JSON response
        echo json_encode($response);
    } else {
        // failed to insert row
        $response["success"] = 0;
        $response["message"] = "Oops! An error occurred.";

        echo $response["success"];

        // echoing JSON response
        echo json_encode($response);
    }

そして、パラメーターを渡す私のクラスですが、エラーが発生します:

List<NameValuePair> params = new ArrayList<NameValuePair>();
          Log.d("Parameters","1");
          params.add(new BasicNameValuePair("Pname",Pname));
          params.add(new BasicNameValuePair("P_Price",Prices));        
          params.add(new BasicNameValuePair("P_Desc",Desc));
          params.add(new BasicNameValuePair("P_City",city));
          params.add(new BasicNameValuePair("P_Size",Size));
          params.add(new BasicNameValuePair("P_Rooms",bedNumber));
          params.add(new BasicNameValuePair("P_garage",Garnums));
          params.add(new BasicNameValuePair("P_Address",Address));
          params.add(new BasicNameValuePair("P_Long",longertude));
          params.add(new BasicNameValuePair("P_Lat",lattitude));
          params.add(new BasicNameValuePair("Provinces_idProvinces",Provnums));

          Log.d("Json","obj");
       // getting JSON Object
          // Note that create product url accepts POST method

          JSONObject json = jsonParser.makeHttpRequest(save_prop,
                  "POST", params);
          // check log cat fro response
          Log.d("Create Response", json.toString());

PHPによって返される値0のために、JSONでエラーが発生していますが、 この問題を解決する方法がわかりません

そしてここに私の logCat :

06-25 19:36:40.175: E/JSON Parser(2261): Error parsing data org.json.JSONException: Value 0 of type java.lang.Integer cannot be converted to JSONObject
06-25 19:36:40.175: W/dalvikvm(2261): threadid=10: thread exiting with uncaught exception (group=0x40014760)
06-25 19:36:40.236: E/AndroidRuntime(2261): FATAL EXCEPTION: AsyncTask #1
06-25 19:36:40.236: E/AndroidRuntime(2261): java.lang.RuntimeException: An error occured while executing doInBackground()
06-25 19:36:40.236: E/AndroidRuntime(2261):     at android.os.AsyncTask$3.done(AsyncTask.java:266)
4

3 に答える 3

0

編集:単に削除するだけecho $response["success"];です。

あなたが持っているように結果を印刷するべきではありません。そのリクエストでサーバーにアクセスしたときの結果は次のようになると思います...

0{"results":"..."}

結果(上に表示)がAndroid側でJSONオブジェクトとして消費されているため、このエラーが発生します。上記の結果は有効なJSON形式ではないため、例外がスローされます。だから私の提案は、次のような結果を返すようにPHPを作り直すことです...

{"success":0,"results":"..."}
于 2012-06-25T17:52:58.653 に答える
0

質問への回答ができなくて申し訳ありませんが、SQL クエリで POST 変数をエスケープしていないため、PHP コードが SQL インジェクション攻撃を受けやすいことに気付きました。さらに良いことに、準備済みステートメントを使用する必要があります。

于 2012-06-25T19:49:07.033 に答える
0
 Error parsing data org.json.JSONException: Value 0 of type java.lang.Integer cannot be converted to JSONObject

コードのどこかで、整数値を JSONObject に変換しようとしています。

このコードが原因のようです

   JSONObject json = jsonParser.makeHttpRequest(save_prop,
                  "POST", params);

PHP の応答が「Integer」ではなく JSONObject であることを確認してください。

于 2012-06-25T17:47:24.153 に答える