记录是没有从Android的插入MySQL数据库表 [英] Record is not getting inserted from android to mysql database table

查看:117
本文介绍了记录是没有从Android的插入MySQL数据库表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从Android应用程序到MySQL数据库表插入数据。 但不知何故,数据没有得到插入。我认为Android和mysql数据库没有连接。我没有收到来自安卓端的任何错误。但在PHP端...如果我运行的网址..我得到通知。未定义的变量。但这些变量在机器人。

这是我的android端code:

 包com.example.insertintophp;

进口的java.util.ArrayList;

进口org.apache.http.Htt presponse;
进口org.apache.http.NameValuePair;
进口org.apache.http.client.HttpClient;
进口org.apache.http.client.entity.UrlEn codedFormEntity;
进口org.apache.http.client.methods.HttpPost;
进口org.apache.http.impl.client.DefaultHttpClient;
进口org.apache.http.message.BasicNameValuePair;

进口android.os.Bundle;
进口android.app.Activity;
进口android.util.Log;
进口android.view.Menu;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.Button;
进口android.widget.EditText;

公共类MainActivity延伸活动{

    的EditText名称,城市,电子邮件,联系人,味精;
    按钮插入;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);

        名称=(EditText上)findViewById(R.id.txtname);
        城市=(EditText上)findViewById(R.id.txtcity);
        电子邮件=(的EditText)findViewById(R.id.txteid);
        接触=(EditText上)findViewById(R.id.txtno);
        味精=(EditText上)findViewById(R.id.txtmsg);
        插入=(按钮)findViewById(R.id.btninsert);

        insert.setOnClickListener(新OnClickListener(){

            @覆盖
            公共无效的onClick(查看arg0中)
            {
                // TODO自动生成方法存根
                。字符串纳米= name.getText()的toString();
                。字符串克拉= city.getText()的toString();
                。字符串EMAILID = email.getText()的toString();
                。字符串否= contact.getText()的toString();
                。字符串str = msg.getText()的toString();
                insertRecords(NM,CT,EMAILID,不,STR);

            }
            私人无效insertRecords(字符串纳米,CT字符串,字符串EMAILID,没有字符串,字符串str)
            {
                 ArrayList的<的NameValuePair> namevaluepairs中=新的ArrayList<的NameValuePair>(5);
                    nameValuePairs.add(新BasicNameValuePair(名,纳米));
                    nameValuePairs.add(新BasicNameValuePair(城市,CT));
                    nameValuePairs.add(新BasicNameValuePair(电子邮件,EMAILID));
                    nameValuePairs.add(新BasicNameValuePair(接触,否));
                    nameValuePairs.add(新BasicNameValuePair(味精,STR));
                    送出数据(namevaluepairs中);
            }
            私人无效送出数据(ArrayList中<的NameValuePair>数据)
            {
                尝试
                {
                    HttpClient的HttpClient的=新DefaultHttpClient();
                    HttpPost httppost =新HttpPost(http://10.0.2.2:8080/demo/insertData.php);
                    httppost.setEntity(新UrlEn codedFormEntity(数据));
                    HTT presponse响应= httpclient.execute(httppost);

                }
                赶上(例外五){
                    // TODO:处理异常
                    Log.e(log_tag,错误:+ e.toString());
                }
            }
        });

    }


}
 

这是我的PHP端code:

 < PHP

$图标=的mysql_connect(localhost的根,);
如果(!$图标)
{
死亡(无法连接:mysql_error());
}
mysql_select_db(db_best_voyage,$图标)或死亡(数据库选择错误);

回声json_en code($的数据);
$名称= $ _ POST ['名称'];
$城市= $ _ POST ['城市'];
$电子邮件= $ _ POST [电子邮件];
$触点= $ _ POST ['接触'];
$味精= $ _ POST ['味精'];

请求mysql_query(插入ctable(姓名,城市,电子邮件,联系人,味精)VALUES('。$名字。''。$的城市。''。$电子邮件。''。$接触','$味精'))。;
则mysql_close($图标);

?>
 

解决方案

这是因为

1)您还没有宣布/初始化任何$ data变量,但要在编码到JSON和呼应。

2)此外,您在访问后的参数并插入到数据库中像下面后呼应jsonen codeD数据。

  $ name = $ _ POST ['名称'];
    $城市= $ _ POST ['城市'];
    $电子邮件= $ _ POST [电子邮件];
    $触点= $ _ POST ['接触'];
    $味精= $ _ POST ['味精'];

    请求mysql_query(插入ctable(姓名,城市,电子邮件,联系人,味精)VALUES('。$名字。''。$的城市。''。$电子邮件。''。$接触','$味精'))。;

回声json_en code($的数据);
 

请确保用一些数据喂$的数据,以确保您已成功插入记录。

编辑:

从您的浏览器中测试这个第一:

 < PHP

$输出=阵列();

$图标=的mysql_connect(localhost的根,);
如果(!$图标)
{
死亡(无法连接:mysql_error());
}
mysql_select_db(db_best_voyage,$图标)或死亡(数据库选择错误);

回声json_en code($的数据);
$ NAME =NAME1;
$城市=city1;
$电子邮件=email1;
$触点=contact1;
$味精=MSG1;

$ insert1 =请求mysql_query(INSERT INTO ctable(姓名,城市,电子邮件,联系人,味精)VALUES('。$名字。''。$的城市。''。$电子邮件。',' $接触。,$味精。'));
则mysql_close($图标);

如果($ insert1)
{
        $输出[成功] = 1;
    $输出[信息] =成功插入;

    //呼应JSON响应
    回声json_en code($输出);
}
其他
{
     $输出[成功] = 0;
    $输出[信息] =插入失败......

    //呼应JSON响应
    回声json_en code($输出);
}


?>
 

I am trying to insert data from android application to mysql database table. but somehow Data is not getting inserted.. I think android and mysql database is not connected. I am not getting any error from android side. but at php side... if i run url .. I get notices. that undefined variables. but those variables are in android.

This my android side code :

   package com.example.insertintophp;

import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    EditText name,city,email,contact,msg;
    Button insert;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        name =(EditText)findViewById(R.id.txtname);
        city =(EditText)findViewById(R.id.txtcity);
        email =(EditText)findViewById(R.id.txteid);
        contact =(EditText)findViewById(R.id.txtno);
        msg =(EditText)findViewById(R.id.txtmsg);
        insert=(Button)findViewById(R.id.btninsert);

        insert.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0)
            {
                // TODO Auto-generated method stub
                String nm = name.getText().toString();
                String ct = city.getText().toString();
                String emailid = email.getText().toString();
                String no = contact.getText().toString();
                String str = msg.getText().toString();
                insertRecords(nm, ct, emailid, no, str);

            }
            private void insertRecords(String nm,String ct,String emailid,String no,String str)
            {
                 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(5);
                    nameValuePairs.add(new BasicNameValuePair("name", nm));
                    nameValuePairs.add(new BasicNameValuePair("city",ct));
                    nameValuePairs.add(new BasicNameValuePair("email",emailid));
                    nameValuePairs.add(new BasicNameValuePair("contact",no));
                    nameValuePairs.add(new BasicNameValuePair("msg",str));
                    sendData(nameValuePairs);
            }
            private void sendData(ArrayList<NameValuePair> data)
            {
                try 
                {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost("http://10.0.2.2:8080/demo/insertData.php");
                    httppost.setEntity(new UrlEncodedFormEntity(data));
                    HttpResponse response = httpclient.execute(httppost);

                }
                catch (Exception e) {
                    // TODO: handle exception
                    Log.e("log_tag", "Error:  "+e.toString());
                }
            }
        });

    }


}

And this is my php side code :

  <?php 

$icon = mysql_connect("localhost","root",""); 
if(!$icon) 
{ 
die('Could not connect : ' . mysql_error()); 
} 
mysql_select_db("db_best_voyage", $icon)or die("database selection error"); 

echo json_encode($data); 
$name=$_POST['name']; 
$city=$_POST['city']; 
$email = $_POST['email']; 
$contact = $_POST['contact']; 
$msg = $_POST['msg']; 

mysql_query("INSERT INTO ctable (name,city,email,contact,msg) VALUES ('".$name."', '".$city."', '".$email."', '".$contact."', '".$msg."')"); 
mysql_close($icon); 

?>

解决方案

It's because

1) You haven't declared/initialized any $data variable, but you are encoding it to json and echoing.

2) Moreover, you echo the jsonencoded data after accessing the post parameters and inserting them in the database like below.

    $name=$_POST['name']; 
    $city=$_POST['city']; 
    $email = $_POST['email']; 
    $contact = $_POST['contact']; 
    $msg = $_POST['msg']; 

    mysql_query("INSERT INTO ctable (name,city,email,contact,msg) VALUES ('".$name."', '".$city."', '".$email."', '".$contact."', '".$msg."')");

echo json_encode($data); 

Make sure to feed the $data with some data to ensure that you are successfully inserting the record.

Edit:

Test this first from your browser:

<?php 

$output = array();

$icon = mysql_connect("localhost","root",""); 
if(!$icon) 
{ 
die('Could not connect : ' . mysql_error()); 
} 
mysql_select_db("db_best_voyage", $icon)or die("database selection error"); 

echo json_encode($data); 
$name= "name1";
$city= "city1"; 
$email = "email1"; 
$contact = "contact1"; 
$msg = "msg1"; 

$insert1 = mysql_query("INSERT INTO ctable (name,city,email,contact,msg) VALUES ('".$name."', '".$city."', '".$email."', '".$contact."', '".$msg."')"); 
mysql_close($icon); 

if($insert1)
{
        $output["success"] = 1;
    $output["message"] = "Successfully inserted";

    // echoing JSON response
    echo json_encode($output);
}
else
{
     $output["success"] = 0;
    $output["message"] = "insertion failed......";

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


?>

这篇关于记录是没有从Android的插入MySQL数据库表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆