我在Android应用程序中制作登录服务,但登录时遇到问题。 在我注册示例数据并尝试登录后,登录按钮会响应消息' BasicNetwork.performRequest:http://ekb2011.cafe24.com/Login.php&#39}的意外响应代码500。
这是我登录的PHP代码。
<?php
$con = mysqli_connect("localhost","ekb2011","*********","ekb2011");
$userID = $_POST["userID"];
$userPassword = $_POST["userPassword"];
$statement = mysqli_prepare($con, "SELECT * FROM USER WHERE userID = ? AND userPassword = ?");
mysqli_stmt_bind_param($statement, "ss", $userID, $userPassword);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result(&statement, $userID, $userPassword, $userName);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["userID"] = $userID;
$response["userPassword"] = $userPassword;
$response["userName"] = $userName;
}
echo json_encode($response);
?>
&#13;
以下是我的应用程序中执行的java代码。
LoginActivity.java
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
final EditText idText=(EditText)findViewById(R.id.idText);
final EditText passwordText=(EditText)findViewById(R.id.passwordText);
final Button loginButton=(Button)findViewById(R.id.loginButton);
final TextView registerButton = (TextView)findViewById(R.id.registerButton);
final CheckBox loginCheckBox = (CheckBox)findViewById(R.id.logincheckBox);
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent registerIntent=new Intent(LoginActivity.this, RegisterActivity.class);
LoginActivity.this.startActivity(registerIntent);
}
});
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String userID=idText.getText().toString();
final String userPassword=passwordText.getText().toString();
Response.Listener<String> responseListener=new Response.Listener<String>(){
@Override
public void onResponse(String response) {
try{
JSONObject jsonResponse=new JSONObject(response);
boolean success=jsonResponse.getBoolean("success");
if(success){
String userID=jsonResponse.getString("userID");
String userPassword=jsonResponse.getString("userPassword");
Intent intent=new Intent(LoginActivity.this, MainActivity.class);
intent.putExtra("userID",userID);
intent.putExtra("userPassword",userPassword);
LoginActivity.this.startActivity(intent);
}
else{
AlertDialog.Builder builder=new AlertDialog.Builder(LoginActivity.this);
builder.setMessage("Failed to Login")
.setNegativeButton("Try Again", null)
.create()
.show();
}
} catch(Exception e){
e.printStackTrace();
}
}
};
LoginRequest loginRequest=new LoginRequest(userID, userPassword, responseListener);
RequestQueue queue= Volley.newRequestQueue(LoginActivity.this);
queue.add(loginRequest);
}
});
}
}
LoginRequest.java
public class LoginRequest extends StringRequest {
final static private String URL="http://ekb2011.cafe24.com/Login.php";
private Map<String, String> parameters;
public LoginRequest(String userID, String userPassword, Response.Listener<String> listener){
super(Method.POST, URL, listener, null);
parameters=new HashMap<>();
parameters.put("userID", userID);
parameters.put("userPassword", userPassword);
}
@Override
public Map<String, String> getParams(){
return parameters;
}
}
如何解决此问题?
答案 0 :(得分:0)
改变这个:
mysqli_stmt_bind_result(&statement, $userID, $userPassword, $userName);
在此:
mysqli_stmt_bind_result($statement, $userID, $userPassword, $userName);