使用 PHP 将 Android 的数据添加到 MySQL

Add Data with Android to MySQL using PHP

我有一个 MySQL 数据库,我想用我的 Android 应用程序添加一个条目。为此,我在中间有一个 PHP 脚本。因此,我的 Android 应用程序应使用应插入数据库的值运行脚本,然后脚本调用数据库将其插入。 我的 MySQL 名为 GCM_ID 的数据库只有一个名为 GCM_ID 的列,如下所示:

GCM_ID
------
id1
id2
id3
...

这是我的PHP脚本:

<?php
    mysql_connect("my_domain","my_user","my_password");
    mysql_select_db("GCM_ID");

    $id=$_REQUEST['GCM_ID'];

    $flag['code']=0;

    if($r=mysql_query("insert into GCM_ID(GCM_ID) VALUES('$id')",$con))
    {
        $flag['code']=1;
        echo"hi";
    }

    print(json_encode($flag));
    mysql_close($con);
?>

域、用户和密码正确,我已经用另一个脚本测试过了。

这是我的 Android 应用程序的 Java 代码,用于连接到 PHP 脚本:

public void insert(String gcm_id) {
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();

    nameValuePairs.add(new BasicNameValuePair("GCM_ID", gcm_id));


    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("link/to/my/php/script");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
        Log.e("pass 1", "connection success ");
    } catch (Exception e) {
        Log.e("Fail 1", e.toString());
        Toast.makeText(getApplicationContext(), "Invalid IP Address",
                Toast.LENGTH_LONG).show();
    }

    try {
        BufferedReader reader = new BufferedReader
                (new InputStreamReader(is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
        Log.e("pass 2", "connection success ");
    } catch (Exception e) {
        Log.e("Fail 2", e.toString());
    }

    try {
        JSONObject json_data = new JSONObject(result);
        code = (json_data.getInt("code"));

        if (code == 1) {
            Toast.makeText(getBaseContext(), "Inserted Successfully",
                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getBaseContext(), "Sorry, Try Again",
                    Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        Log.e("Fail 3", e.toString());
    }
}

我从 here 获得了代码片段并稍微修改了 PHP 脚本和 Android 代码。 当我运行我的应用程序时,出现此错误:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/a2161963/public_html/insertGcmIds.php on line 9
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/a2161963/public_html/insertGcmIds.php on line 16

我是 PHP 的新手,所以我不 第一个问题是,带有代码片段的教程向 MySQL 数据库添加了一对值,这就是他使用 ArrayList<NameValuePair> 的原因。我可以只用一个值来使用这个 NameValuePair 吗?我能以其他方式做到吗? 我是不是做错了什么?

从 mysql_query 中删除 $con,mysql_close 它将起作用

  mysql_connect("my_domain","my_user","my_password");
    mysql_select_db("GCM_ID");

    $id=$_REQUEST['GCM_ID'];

    $flag['code']=0;

    if($r=mysql_query("insert into GCM_ID(GCM_ID) VALUES('$id')"))
    {
        $flag['code']=1;
        echo"hi";
    }

    echo json_encode($flag);
    mysql_close();

并停止使用 mysql_ 扩展,因为它已被弃用....而是使用 mysqli 或 pdo。尝试 w3schools.com mysqli 扩展。