【发布时间】:2015-07-09 21:53:13
【问题描述】:
所以我有一个类注册器,我想将用户信息注册到外部数据库中,但由于某种原因它不会插入,如果有错误请指出错误或告诉我缺少什么?
这是我上传到网络主机的 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));
}
});
}
【问题讨论】:
-
到底发生了什么? http 连接是否命中 URI? php无法插入数据吗?你甚至没有连接到 HTTP 连接吗?不要只是向我们倾倒代码页,告诉我们实际问题是什么
-
@GabeSechan 我知道我很抱歉,但这只是因为我不知道到底发生了什么,因为 logcat 没有向我显示任何错误或指示某些东西,所以这就是为什么我是有点沮丧,因为我不知道实际的问题是什么!
-
你有没有在调试器中运行它来解决这个问题?
-
@GabeSechan 我检查了调试器,没有问题,它执行了帖子并通过了 try and catch 没有问题
标签: php android android-studio database-connection