2016-02-09 71 views
0

我需要插入到一個MySQL數據庫從Android應用程序retieving一些數據,並將其插入到一些不同的表。如何從Android應用程序中將數據插入到MySQL數據庫中?

我創建一個用戶的註冊頁面/活動,它的工作,但我試圖從其他活動插入其他數據,我不能將它們插入我的數據庫。

這是我的代碼:

RegisterUserClass是翻譯類。

RegisterBody.java - >在這種情況下,我需要保存到表中也用戶的ID,這就是爲什麼我保存電子郵件和密碼。

private static final String REGISTER_URL = "http://10.0.2.2/sFitness/RegisterBody.php"; 

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

     etWaist =(EditText) findViewById(R.id.etWaist); 
     etHips =(EditText) findViewById(R.id.etHips); 
     etBreast =(EditText) findViewById(R.id.etBreast); 
     etWrist=(EditText) findViewById(R.id.etWrist); 
     etWeight=(EditText)findViewById(R.id.etWeight); 
     etHeight=(EditText)findViewById(R.id.etHeight); 

     bNext = (Button)findViewById(R.id.bNext); 

     bNext.setOnClickListener(this); 

     Bundle b= this.getIntent().getExtras(); 
     array=b.getStringArray(null); 
     name=array[0]; 
     surname=array[1]; 
     age=array[2]; 
     email=array[3]; 
     password=array[4]; 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
      case R.id.bNext: 
       Toast.makeText(getApplicationContext(), "All ok", Toast.LENGTH_LONG).show(); 
       registerUser(); 
       break; 
     } 
    } 

    private void registerUser() { 
     String waist = etWaist.getText().toString(); 
     String hips = etHips.getText().toString(); 
     String breast = etBreast.getText().toString(); 
     String wrist = etWrist.getText().toString(); 
     String weight = etWeight.getText().toString(); 
     String height = etHeight.getText().toString(); 

     register(waist, hips, breast, wrist, weight, height); 
    } 

    private void register(String waist, String hips, String breast, String wrist, String weight,String height) { 
     class RegisterUser extends AsyncTask<String, Void, String> { 

      ProgressDialog loading; 
      RegisterUserClass ruc = new RegisterUserClass(); 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 

       loading = ProgressDialog.show(RegisterBody.this, "Please wait...", null, true, true); 
      } 

      @Override 
      protected void onPostExecute(String s) { 
       super.onPostExecute(s); 
       loading.dismiss(); 
       Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show(); 
      } 

      @Override 
      protected String doInBackground(String... params) { 
       HashMap<String, String> data = new HashMap<String, String>(); 
       data.put("waist", params[0]); 
       data.put("hips", params[1]); 
       data.put("breast", params[2]); 
       data.put("wrist", params[3]); 
       data.put("weight", params[4]); 
       data.put("height", params[5]); 

       String result = ruc.sendPostRequest(REGISTER_URL, data); 
       return result; 
      } 
     } 
     RegisterUser ru = new RegisterUser(); 
     ru.execute(waist,hips,breast,wrist,weight,height, email, password); 
     Bundle b=new Bundle(); 
     b.putStringArray(null, new String[]{name, surname, age, email, password,waist,hips,breast,wrist,weight,height}); 
     Intent in=new Intent(this,ChooseDiet.class); 
     in.putExtras(b); 
     startActivity(in); 
    } 

RegisterBody.php

if($_SERVER['REQUEST_METHOD']=='POST') 
{ 
    $waist = $_POST["waist"]; 
    $hips = $_POST["hips"]; 
    $breast = $_POST["breast"]; 
    $wrist = $_POST["wrist"]; 
    $weight = $_POST["weight"]; 
    $height = $_POST["height"]; 
    $email = $_POST["email"]; 
    $password = $_POST["password"]; 


    $conn = mysqli_connect("localhost","root","","sfitness") or die("Error " . mysqli_error($conn)); 


    $sql="SELECT ID_Person FROM Person WHERE email=".$email." AND password=".$password.""; 
    $id_person=mysqli_query($conn,$sql); 
    if (!$sql) 
    { 
      echo 'Could not run query: ' . mysql_error(); 
      exit; 
    } 
    $id_person = mysql_fetch_row($sql); 



    $query ="INSERT INTO Body 
        (Waistline,Hips,Breast, 
        Wrist,Height,ID_person)     
       values('$waist','$hips','$breast', 
        '$wrist','$weight','$height','$id_peroson')"; 

    $rows=mysql_query($query,$conn) or die("query fallita"); 
    mysql_close($conn); 

    if($rows>0) 
     echo "Registrazione avvenuta correttamente"; 
    else 
     echo "Registrazione fallita"; 

} 

else 
{ 
    echo "Error!!"; 
} 

我沒有錯誤,但數據不會保存到表..爲什麼?

+1

** mysql_query!= mysqli_query **您不能混用mysqli_和mysql_函數調用 – RiggsFolly

+0

那麼,我需要使用什麼? @RiggsFolly –

+0

如果這不會給你錯誤的PHP錯誤日誌,那麼你是**只是不看** – RiggsFolly

回答

1

確定您的INSERT查詢已格式化,因此它更具可讀性,錯誤很明顯。他們通常是在使用一些合理的代碼格式時。

的INSERT查詢6列提到和7個指標的影響設定

你也有拼寫錯誤$id_person$ID_Peroson

$query ="INSERT INTO Body     
       (Waistline,Hips,Breast, 
       Wrist,Height,ID_person) 
     values('$waist','$hips','$breast', 
       '$wrist','$weight','$height','$id_person')"; 

$res = mysqli_query($query,$conn); 
if ($res === FALSE){ 
    echo mysqli_error($conn); 
    exit; 
} 

要麼添加Weight到列列表或從參數列表中刪除$weight

附加說明;還注意到@JayBlanchards評論有關散列的口令和使用的準備和參數化查詢

$query ="INSERT INTO Body     
        (Waistline,Hips,Breast,Wrist,Weight,Height,ID_person) 
      values(?,?,?,?,?,?,?)"; 

$stmt = mysqli_prepare($query); 
if ($stmt === FALSE) { 
    mysqli_error($conn); 
    exit; 
} 
mysqli_stmt_bind_param('ssssssi', '$waist','$hips','$breast', 
            '$wrist','$weight','$height','$id_person'); 

$result = mysqli_stmt_execute($stmt); 
if ($result === FALSE){ 
    echo $mysqli_stmt_error($stmt); 
    exit; 
} 
+0

完成了,但沒有記錄保存到db @RiggsFolly –

+0

我錯過了'$ ID_Peroson'的拼寫錯誤,它應該是'$ id_person'如果你在每條語句後添加一些錯誤檢查,它會告訴你所有這些 – RiggsFolly

+0

拼寫錯誤得到解決? – RiggsFolly

0

我發現我的問題的解決方案。

進入的java文件我修改這部分增加:

data.put("email", email); 
data.put("password", password); 

除了爲PHP文件修改我的代碼,這一個:現在

$conn = mysql_connect("127.0.0.1","root","") or die("DBMS non disponibile"); 
mysql_select_db("sfitness") or die("Database non disponibile"); 

$sql="SELECT * FROM person WHERE Email='$email' AND Password='$password'"; 

$result=mysql_query($sql,$conn); 
if (mysql_num_rows($result)==1){ 
    $row = mysql_fetch_array($result); 
    $id_person=$row['ID_Person']; 
} 


$query ="INSERT INTO Body (Waistline, Hips, Breast, Wrists, Weight, Height, ID_person) values('$waist','$hips','$breast','$wrist','$weight','$height','$id_person')"; 

$rows=mysql_query($query,$conn) or die("query fallita"); 
mysql_close($conn); 
if($rows>0) 
    echo "Correct registration"; 
else 
    echo "Registration failed"; 

有了這個代碼它的工作原理,感謝所有

相關問題