0

这是我的代码,我需要插入 mysql 数据库我有 mysql,php,android

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
 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 响应是 JSONObject 而不是“整数”。

于 2012-06-25T17:47:24.153 回答
0

编辑:只需删除echo $response["success"];.

您不应该像以前那样打印结果。我假设这就是您使用该请求访问服务器时的结果...

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

您收到此错误是因为结果(如上所示)在 Android 端被用作 JSON 对象。上面的结果不是有效的 JSON 格式,因此会引发异常。所以我的建议是修改你的 PHP 以返回看起来像......

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

很抱歉,我没有回答您的问题,但我注意到您的 PHP 代码容易受到 SQL 注入攻击,因为您没有在 SQL 查询中转义 POST 变量。更好的是:您应该使用准备好的语句。

于 2012-06-25T19:49:07.033 回答