使用 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 扩展。
我有一个 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 扩展。