【问题标题】:Android, PHP and MySQL安卓、PHP 和 MySQL
【发布时间】:2013-11-21 17:04:15
【问题描述】:

我正在尝试开发一个连接到 MySQL 数据库的安卓应用程序。

我使用 PHP 作为 Web 服务来解析 JSON 数组中的数据。

但是当我单击执行该过程时,没有任何反应,数据不会添加到数据库中。 首先我更改了代码,我使用 AsynTask<> 来避免 RunningOnMainThread 异常,但你无法让它工作。

有什么建议吗?

代码如下:

PHP:

<?php
$hostname ="localhost";
$database ="traffic_qro";
$username ="root";
$password ="";

$localhost = mysql_connect($hostname,$username,$password);

mysql_select_db("traffic_qro");
$name = $_REQUEST['driver_name'];
$number = $_REQUEST['driver_number'];
$plate = $_REQUEST['driver_plate'];
$brand = $_REQUEST['driver_brand'];
$model = $_REQUEST['driver_model'];

$sql = "INSERT INTO users VALUES('".$name."', '".$number."', '".$plate."', '".$brand."', '".$model."'');";

$res = mysql_query($sql);

if(!$res) {
    echo "Error in query: ".mysql_error();
}
mysql_close();
?>

DBTask.java

class DBTask extends AsyncTask<String, Void, Void> {

    protected Void doInBackground(String... args) {
        InputStream is = null;
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("driver_name", args[0]));
        nameValuePairs.add(new BasicNameValuePair("driver_number", args[1]));
        nameValuePairs.add(new BasicNameValuePair("driver_plate", args[2]));
        nameValuePairs.add(new BasicNameValuePair("driver_brand", args[3]));
        nameValuePairs.add(new BasicNameValuePair("driver_model", args[4]));
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(
                    "http://192.168.1.85/traffic_qro/add_client_doc.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            Log.e("log_tag", is.toString());
        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection" + e.toString());
        }
        return null;
    }

    protected void onPostExecute(String feed) {
        // TODO: check this.exception
        // TODO: do something with the feed
    }
}

DBTask.java 的实现

new DBTask().execute(driver_name, drvr_num, driver_car_plate,
                    driver_car_brand, driver_car_model);

【问题讨论】:

  • 您是否收到来自远程 PHP 服务器的响应?

标签: java php android mysql json


【解决方案1】:

您的 SQL 语句中有错误,特别是在 '".$model."''); 附近($model 后有两个单引号):

变化:

$sql = "INSERT INTO users 
        VALUES('".$name."', '".$number."', '".$plate."', '".$brand."', '".$model."'');";

$sql = "INSERT INTO users 
        VALUES('".$name."', '".$number."', '".$plate."', '".$brand."', '".$model."');";

要检查此类错误,请使用:

$res = mysql_query($sql, $localhost) or trigger_error(mysql_error($localhost));

【讨论】:

  • 我更改了双单引号错误,但什么也没做。我不知道我是否正确解释了自己,如果是这样,请告诉我。 PS:对不起我的英语。 ://
猜你喜欢
  • 2015-09-06
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 2011-03-08
  • 2011-04-07
  • 2012-07-08
相关资源
最近更新 更多