将json对象数据发送到android中的远程mysql数据库

时间:2015-04-20 20:36:44

标签: php android mysql json remote-server

我已经使用在互联网上发布的方法成功从远程数据库中获取数据。但是我无法将数据推送(插入)到同一个表中。 我添加了一个静态计数器,只是为了检查代码是否到达给定的URL,但正如预期的那样,它失败了。下面是我在远程服务器文件管理器中保存的php文件。

<?php 
$json=$_GET [ 'json']; $json=f ile_get_contents( 'php://input'); 
$obj=json_decode($json);
$conn=mysql_connect( "mydatabasename", "myusername", "mypassword") or die( "error connecting"); 
mysql_select_db( "mydatabasename",$conn)or die("database couldnot connect");
error_reporting(E_ALL);
$tid=$_POST[ 'tid']; 
$name=$_POST[ 'name'];
mysql_query( "insert into mytablename(tid,name) values($tid,$name)");
?>

我在android布局中输入了两个输入,tid,name并尝试发送到远程数据库。 注意:出于安全目的,已隐藏数据库名称和其他详细信息。

2 个答案:

答案 0 :(得分:0)

如果你正在寻找一个干净的方式..i建议你做这样的事情: register.php

  <?php
include('connect.php');
$response = array();   
if (isset($_POST['Nom']) && isset($_POST['Prenom']) && isset($_POST['Email'])&& isset($_POST['Mdp'])) { //checking if the required fields are set

    $Nom = $_POST['Nom'];//the family name
    $Prenom = $_POST['Prenom']; //last name
    $Email = $db->real_escape_string($_POST['Email']); 
    $Mdp = $db->real_escape_string($_POST['Mdp']);  //the password

    if ($res = $db->query("SELECT * FROM `patient` WHERE `Email_p`='$Email' ")) {  
    $row_cnt = $res->num_rows; }
     if($row_cnt>0) {      
        $response["success"] = 0;
        $response["message"] = "Email exists"; }
    if ($row_cnt <1){
    $result = mysqli_query($db,"INSERT INTO `patient`(`Id_p`, `Nom`,  `Prenom`, `Email_p`, `Mdp`) VALUES ('','$Nom','$Prenom','$Email','$Mdp')");

    if ($result ) { 
        $response["success"] = 1; // if account created we set success value to 1
        $response["message"] = "account created"; 
    } else {                    
        $response["success"] = 0;
        $response["message"] = "Oops Error"; 
    }}
 }else { 
    $response["success"] = 0;
    $response["message"] = "Fields messing";


} 
   echo json_encode($response);
?>

在android ... yourActivity.java

  class CreerNouveauCompte extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(inscription.this);
        pDialog.setMessage(getString(R.string.inscriEnCours));
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    protected String doInBackground(String... args) {
        String nom = edtNom.getText().toString();
        String prenom = edtPrenom.getText().toString();
        String email = edtEmail.getText().toString();
        String mdp = edtMdp.getText().toString();
        JSONObject json;
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("Nom", nom));
        params.add(new BasicNameValuePair("Prenom", prenom));
        params.add(new BasicNameValuePair("Email", email));
        params.add(new BasicNameValuePair("Mdp", mdp));

            json= jsonParser.makeHttpRequest(url_register (your url),
                    "POST", params);
        } 
        try {if(json != null && !json.isNull("success")){
            int success = json.getInt("success");
            s2=json.getString("message");
            if (success == 1) { //the acount created
                Intent intent;
                SharedPreferences settings = getSharedPreferences("compte", 0);
                SharedPreferences.Editor editor = settings.edit();
                editor.putString("nom",edtNom.getText().toString() );
                editor.putString("prenom",edtPrenom.getText().toString() );
                editor.putString("email",edtEmail.getText().toString());
                editor.putString("mdp",edtMdp.getText().toString());

                editor.apply(); 
                    intent = new Intent(inscription.this,MainActivity.class); 

                }
                startActivity(intent);
                finish();
            } else {
            }}
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    protected void onPostExecute(String file_url) {
        pDialog.dismiss(); 
             }

}

call it like this
new CreerNouveauCompte().execute();

connect.php

 <?php  
$db = new mysqli('localhost', 'root', '', 'rechmed');  
mysqli_set_charset($db,'utf8');
?>
//note i use mysqli ..in your case use mysql

答案 1 :(得分:0)

如果您尝试使用以下格式解码JSONObject {“tid”:“myTidValue”,“name”:“myNameValue”}

,请使用下面的代码
<?php 

$json=stripslashes($_GET['json']); 
$obj=json_decode($json, true);
$conn=mysql_connect( "mydatabasename", "myusername", "mypassword") or die( "error connecting"); 
mysql_select_db( "mydatabasename",$conn)or die("database couldnot connect");
error_reporting(E_ALL);
$tid=$json['tid']; 
$name=$json['name'];
mysql_query("insert into mytablename(tid,name) values('$tid','$name')");

?>

并使用以下格式解码JSONArray [{“tid”:“myTidValue1”,“name”:“myNameValue1”},{“tid”:“myTidValue2”,“name”:“myNameValue2”}]你可以使用下面的代码

<?php 

$json=stripslashes($_GET['json']); 
$obj=json_decode($json, true);
$conn=mysql_connect( "mydatabasename", "myusername", "mypassword") or die( "error connecting"); 
mysql_select_db( "mydatabasename",$conn)or die("database couldnot connect");
error_reporting(E_ALL);

foreach ($json as $data){
    $tid=$data['tid']; 
    $name=$data['name'];
    mysql_query("insert into mytablename(tid,name) values('$tid','$name')");
}
?>

如果两者都不起作用,请发布您的Android代码