2015-04-20 145 views
0

中的遠程mysql數據庫我已經使用發佈在internet上的方法成功地從遠程數據庫獲取數據,但我無法將數據推送(插入)到同一個表中。 我已經添加了一個靜態計數器只是爲了檢查代碼是否到達給定的URL,但正如預期的那樣,它失敗了。以下是我保存在遠程服務器文件管理器中的php文件。發送json對象數據到android

<?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,名稱中輸入了兩個輸入並嘗試發送到遠程數據庫。 注意:出於安全目的,數據庫名稱和其他詳細信息已被隱藏。

+0

你怎麼用JSON對象呢? –

+0

您使用Get方法forjson和Post for tid並命名爲什麼?可能是問題所在 –

回答

0

如果你想找一個乾淨的方式..我建議你做這樣的事情: 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(); 

的連接.php

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

使用下面的代碼如果您嘗試使用此格式解碼JSONObject {「 TID 「:」 myTidValue」, 「名稱」: 「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」, 「名稱」: 「myNameValue1」},{ 「TID」: 「myTidValue2」, 「名」: 「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