Web服务不能正常工作

时间:2016-11-18 08:53:20

标签: java php android mysql mysqli

好吧,我向你解释我正在尝试做什么,我需要将一个用户从我的Android设备插入到localhost,我在php中使用一个Web服务,它似乎不起作用,因为它说我已经在我的数据库中插入了该用户,但是当我转到localhost时,我找不到我的用户..

这是我的代码:

的Java(机器人):

public class NewUsuarioPart2Activity extends AppCompatActivity {

private EditText textoEmail, textoDNI, textoEdad,textoNombreUsu;
private Button btnHecho;
private String nom = "";
private String apellido = "";
private String contra = "";
private String contraNew = "";
private int id = 1;



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_usuario_nuevo_part2);

    if (android.os.Build.VERSION.SDK_INT > 9) {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        String str = "*** My thread is now configured to allow connection";

        Toast.makeText(getApplication(), str, Toast.LENGTH_LONG).show();
    }

    //LO GUARDADO DE NEWUSUARIOACTIVITY
    if (savedInstanceState == null) {
        Bundle extras = getIntent().getExtras();
        if(extras == null) {
            nom = null;
            apellido = null;
            contra = null;
            contraNew = null;
        } else {
            nom = extras.getString("STRING_NOM");
            apellido = extras.getString("STRING_APELLIDO");
            contra = extras.getString("STRING_CONTRA");
            contraNew = extras.getString("STRING_CONTRA_NEW");
        }
    } else {
        nom = (String) savedInstanceState.getSerializable("STRING_NOM");
        apellido = (String) savedInstanceState.getSerializable("STRING_APELLIDO");
        contra = (String) savedInstanceState.getSerializable("STRING_CONTRA");
        contraNew = (String) savedInstanceState.getSerializable("STRING_CONTRA_NEW");
    }

    textoEmail = (EditText)findViewById(R.id.edEmail);
    textoDNI = (EditText)findViewById(R.id.edDNI);
    textoEdad = (EditText)findViewById(R.id.edEdad);
    textoNombreUsu = (EditText)findViewById(R.id.edNomUsu);

    btnHecho = (Button)findViewById(R.id.btnHecho);
    btnHecho.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            id++;
            new Insertar(NewUsuarioPart2Activity.this).execute();
            Intent intent = new Intent(NewUsuarioPart2Activity.this, MainActivity.class);
            v.getContext().startActivity(intent);

        }
    });

}

//What I do here is insert my new user to my database



 private boolean insertar(){

        HttpClient httpclient;
        List<NameValuePair> nameValuePairs;
        HttpPost httppost;
        httpclient=new DefaultHttpClient();
        httppost= new HttpPost("http://192.168.231.88/xabiagame/data/insertarOtroMetodo.php"); // Url del Servidor
        //Añadimos nuestros datos
        nameValuePairs = new ArrayList<NameValuePair>(8);
        nameValuePairs.add(new BasicNameValuePair("id",String.valueOf(id).trim()));
        nameValuePairs.add(new BasicNameValuePair("nombre",nom.trim()));
        nameValuePairs.add(new BasicNameValuePair("apellidos",apellido.trim()));
        nameValuePairs.add(new BasicNameValuePair("email",textoEmail.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("dni",textoDNI.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("contrasenya",contraNew.trim()));
        nameValuePairs.add(new BasicNameValuePair("usuario",textoNombreUsu.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("edad",textoEdad.getText().toString().trim()));

        for (int i=0; i<nameValuePairs.size(); i++){
            Log.i("User", nameValuePairs.get(i).toString());
        }

        try {
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            httpclient.execute(httppost);
            return true;
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }

    //AsyncTask para insertar Personas
    class Insertar extends AsyncTask<String,String,String> {

        private Activity context;

        Insertar(Activity context){
            this.context=context;
        }
        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            if(insertar())
                context.runOnUiThread(new Runnable(){
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        Toast.makeText(context, "Persona insertada con exito", Toast.LENGTH_LONG).show();

                        nom = null;
                        apellido = null;
                        contra = null;
                        contraNew = null;

                        textoEmail.setText("");
                        textoDNI.setText("");
                        textoEdad.setText("");
                        textoNombreUsu.setText("");
                    }
                });
            else
                context.runOnUiThread(new Runnable(){
                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        Toast.makeText(context, "No insertado", Toast.LENGTH_LONG).show();
                    }
                });
            return null;
        }
    }
}

这是我在Php中的Web服务(我有两个):

这两个似乎不起作用。

第一个:

<?PHP
$hostname_localhost ="localhost";  //nuestro servidor
$database_localhost ="xabiagame";//Nombre de nuestra base de datos
$username_localhost ="root";//Nombre de usuario de nuestra base de datos (yo utilizo el valor por defecto)
$password_localhost ="";//Contraseña de nuestra base de datos (yo utilizo por defecto)

//'ejemplo.com:3307',  'usuario_mysql', 'contraseña_mysql'

$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)//Conexión a nuestro servidor mysql
or
trigger_error(mysql_error(),E_USER_ERROR); //mensaaje de error si no se puede conectar
mysql_select_db($database_localhost, $localhost);//seleccion de la base de datos con la qu se desea trabajar

//variables que almacenan los valores que enviamos por nuestra app, (observar que se llaman igual en nuestra app y aqui)
$id=$_POST['id'];
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$email=$_POST['email'];
$dni=$_POST['dni'];
$contrasenya=$_POST['contraseña'];
$usuario=$_POST['usuario'];
$edad=$_POST['edad'];

$query_search = "insert into usuario(id,nombre,apellidos,email, dni, contraseña, usuario, edad) values ('".$id."','".$nombre."','".$apellidos."','".$email."','".$dni."','".$contrasenya."','".$usuario."','".$edad."')";//Sentencia sql a realizar
$query_exec = mysql_query($query_search) or die(mysql_error());//Ejecuta la sentencia sql.

/* Consignar la transación */
if (!mysqli_commit($localhost)) {
    print("Falló la consignación de la transacción\n");
    exit();
}
/* Cerrar la conexión */
mysqli_close($localhost);

?>

另一个:

<?php

$id=$_POST['id'];
$nombre=$_POST['nombre'];
$apellidos=$_POST['apellidos'];
$email=$_POST['email'];
$dni=$_POST['dni'];
$contrasenya=$_POST['contraseña'];
$usuario=$_POST['usuario'];
$edad=$_POST['edad'];

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xabiagame";
 // Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection fallida: " . $conn->connect_error);
} 
$sql = "INSERT INTO usuario (id,nombre,apellidos,email, dni, contraseña, usuario, edad)
VALUES ('$id','$nombre','$apellidos','$email','$dni','$contrasenya','$usuario','$edad')";
if ($conn->query($sql) === TRUE) {
    echo "se creo el usuario";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>

我不知道我的错误是什么..似乎一切都很好,我想..

2 个答案:

答案 0 :(得分:0)

问题是您总是将相同的id分配给您要在数据库中保存的记录。因此用户已存在的错误。

在此处查看您的代码:

private int id = 1;

此代码中的变量永远不会更改,因此您尝试保存的所有记录都有id=1。在我看来,你不应该从你的Android应用程序发送id,它是你的数据库的工作,为每个新的插入分配id。检查主要关键策略,例如自动增量。

答案 1 :(得分:0)

<?php
 $data = json_decode(file_get_contents('php://input'), true);
  $key= $input->value; //try like this for all below.
  /* $id=$_POST['id'];
 $nombre=$_POST['nombre'];
 $apellidos=$_POST['apellidos'];
 $email=$_POST['email'];
  $dni=$_POST['dni'];
 $contrasenya=$_POST['contraseña'];
 $usuario=$_POST['usuario'];
 $edad=$_POST['edad'];
 */
 $servername = "localhost";
  $username = "root";
  $password = "";
  $dbname = "xabiagame";
  // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);
 // Check connection
 if ($conn->connect_error) {
 die("Connection fallida: " . $conn->connect_error);
 } 
 $sql = "INSERT INTO usuario (id,nombre,apellidos,email, dni, contraseña,   usuario, edad)
  VALUES    ('$id','$nombre','$apellidos','$email','$dni','$contrasenya','$usuario','$edad')";
if ($conn->query($sql) === TRUE) {
echo "se creo el usuario";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>