2015-07-09 38 views
0

所以我有一個類註冊,我想註冊用戶信息到外部數據庫,但由於某種原因它不會插入,請指出錯誤,如果有任何或告訴我最新失蹤?用Android將信息插入到外部數據庫中

這是PHP文件,其中我把它上傳到網絡主機

<?php 

$con = mysqli_connect("localhost","MY_username","My_Password","My_Databas");//my_user, my_password, my_database 

$BN = $_POST["BadgeNumber"]; 
$name = $_POST["Name"]; 
$EN = $_POST["ExtensionNumber"]; 
$PN = $_POST["PhoneNumber"]; 
$email = $_POST["Email"]; 

$statement = mysqli_prepare($con, "INSERT INTO Register (BadgeNumber, Name, ExtensionNumber, PhoneNumber, Email) 
    VALUES (?, ?, ?, ?, ?)"); 

mysqli_stmt_bind_param($statement, "isiis", $BN, $name, $EN, $PN, $email); 
mysqli_stmt_execute($statement); 

mysqli_stmt_close($statement); 

mysqli_close($con); ?> 

這是所有的連接,並插入正在發生的階級和我寫的域名作爲服務器地址

public class ServerRequests { 

private static final String TAG ="ServerRequests"; 

ProgressDialog progressDialog; 
public static final int CONNECTION_TIMEOUT = 1000 * 15; 
public static final String SERVER_ADDRESS = "http://92211app.netne.net/"; 

public ServerRequests(Context context){ 
    progressDialog = new ProgressDialog(context); 
    progressDialog.setCancelable(false); 
    progressDialog.setTitle("Processing"); 
    progressDialog.setMessage("Please wait..."); 
} 

public void StoreUserDataInBackground(User user, GetUserCallback userCallback){ 

    progressDialog.show(); 
    new StoreUserDataAsyncTask(user, userCallback).execute(); 
} 

public class StoreUserDataAsyncTask extends AsyncTask<Void, Void, Void>{ 

    User user; 
    GetUserCallback userCallback; 

    public StoreUserDataAsyncTask(User user, GetUserCallback userCallback){ 

     this.user = user; 
     this.userCallback = userCallback; 

    } 

    @Override 
    protected Void doInBackground(Void... params) { 

     //setting the NameValuePairs 
     ArrayList<NameValuePair> dataToSend = new ArrayList<>();//stores key and value 

     dataToSend.add(new BasicNameValuePair("BadgeNumber",user.getBadgeNumber()+"")); 
     dataToSend.add(new BasicNameValuePair("Name",user.getName())); 
     dataToSend.add(new BasicNameValuePair("ExtensionNumber",user.getExtensionNumber()+"")); 
     dataToSend.add(new BasicNameValuePair("PhoneNumber",user.getPhoneNumber()+"")); 
     dataToSend.add(new BasicNameValuePair("Email",user.getEmail())); 

     Log.i(TAG,"StoreUserDataAsyncTask method BadgeNumber: "+user.getBadgeNumber()+" Name: "+user.getName()); 

     HttpParams httpRequestParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);//the time we want to wait until the pulse is executed (stop connection) 
     HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);//the time we want to wait to receive anything from the server 

     HttpClient client = new DefaultHttpClient(httpRequestParams);//allows us to make requests to the server, we passed httpRequestParams so the client would know the connection timeout 
     HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php"); 

     try{ 
      post.setEntity(new UrlEncodedFormEntity(dataToSend)); 
      client.execute(post); 
      Log.i(TAG,"try and catch"); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 


     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid){ 
     progressDialog.dismiss(); 
     userCallback.done(null); 
     Log.i(TAG,"onPostExecute"); 
     super.onPostExecute(aVoid); 
    } 
} 

這是接口

interface GetUserCallback { 

public abstract void done(User returnedUser); 

}

這裏就是我所說的StoreUserDataInBackground方法一旦按鈕被點擊

RegisterButton.setOnClickListener(new View.OnClickListener() { 

     //InputStream is = null; 

     @Override 
     public void onClick(View v) { 
      int BN = Integer.parseInt(BadgeNumberView.getText().toString()); 
      String name = NameView.getText().toString(); 
      int EN = Integer.parseInt(ExtensionNumberView.getText().toString()); 
      int PN = Integer.parseInt(PhoneNumberView.getText().toString()); 
      String Email = EmailView.getText().toString(); 

       User user = new User(BN, name, EN, PN, Email); 

       registerUser(user); 

     } 
    }); 

private void registerUser(User user){ 

    ServerRequests serverRequests = new ServerRequests(this); 
    serverRequests.StoreUserDataInBackground(user, new GetUserCallback() { 
     @Override 
     public void done(User returnedUser) { 

      startActivity(new Intent(MainActivity.this, RequestActivity.class)); 

     } 
    }); 
} 
+0

究竟是怎麼回事? http連接是否擊中了URI?該PHP無法插入數據?你甚至沒有進入HTTP連接?不要只是轉儲代碼頁面,告訴我們實際的問題是什麼 –

+0

@GabeSechan我知道我很抱歉,但這只是因爲我不知道究竟發生了什麼,因爲logcat沒有顯示任何錯誤或指示某事,所以這就是爲什麼我有點沮喪,因爲我不知道實際問題是什麼! – lna1994

+0

你有沒有在調試器中運行它來找出它? –

回答

0

1.「電子郵件」似乎被保留,將其更改爲別的東西。

2.Try這樣的:

 dataToSend.add(new BasicNameValuePair("BadgeNumber",user.BN +"")); 
    dataToSend.add(new BasicNameValuePair("Name",user.name)); 
    dataToSend.add(new BasicNameValuePair("ExtensionNumber",user.EN +"")); 
    dataToSend.add(new BasicNameValuePair("PhoneNumber",user.PN +"")); 
    dataToSend.add(new BasicNameValuePair("Email",user.e_mail)); 

    Log.i(TAG,"StoreUserDataAsyncTask method BadgeNumber: "+user.BN +" Name: "+user.name); 
相關問題