连接android与php-mysql
我已经将我的Android应用程序与运行在000.webhost.com上的php mysql xampp服务器连接,我面临的问题是php脚本给了我错误的响应,因为我是php新手,所以我无法解决这个问题 这是我的登录脚本:连接android与php-mysql,php,android,mysql,xampp,Php,Android,Mysql,Xampp,我已经将我的Android应用程序与运行在000.webhost.com上的php mysql xampp服务器连接,我面临的问题是php脚本给了我错误的响应,因为我是php新手,所以我无法解决这个问题 这是我的登录脚本: <?php $con = mysqli_connect("localhost", "id1083203_root", "root1", "id1083203_subway"); if ($con){ echo 'connected'; } $email = i
<?php
$con = mysqli_connect("localhost", "id1083203_root", "root1", "id1083203_subway");
if ($con){
echo 'connected';
}
$email = isset($_POST['em']) ? $_POST['em'] : "";
$password =isset($_POST['pwd']) ? $_POST['pwd'] : "";
$role = isset($_POST['item']) ? $_POST['item'] : "";
$statement = mysqli_prepare($con, "SELECT * FROM login WHERE email = ? AND password = ? AND role=?");
mysqli_stmt_bind_param($statement, "sss", $email, $password, $role);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $id, $email, $password, $role);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["email"] = $email;
$response["password"] = $password;
$response["role"] = $role;
}
echo json_encode($response);
?>
这是我的android端请求代码
package yfsoftwares.foodorderingsystem;
/**
* Created by user on 15/03/2017.
*/
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.Volley;
import org.json.JSONException;
import org.json.JSONObject;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class Login extends AppCompatActivity implements OnItemSelectedListener {
String item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_login);
// Spinner element
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
// Spinner click listener
spinner.setOnItemSelectedListener(this);
Button btnlogin=(Button)findViewById(R.id.login);
final EditText email=(EditText) findViewById(R.id.mail);
final EditText password=(EditText) findViewById(R.id.pwd);
TextView reg = (TextView)findViewById(R.id.reg);
reg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent nxt = new Intent(getApplicationContext(), RegisterActivity.class);
startActivity(nxt);
}
});
TextView fp = (TextView) findViewById(R.id.forgot_password);
fp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent nxt = new Intent(getApplicationContext(), ForgotPasswordActivity.class);
startActivity(nxt);
}
});
// Spinner Drop down elements
List<String> role = new ArrayList<String>();
role.add("admin");
role.add("cook");
role.add("customer");
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, role);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
spinner.setAdapter(dataAdapter);
btnlogin.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// get The User name and Password
String em=email.getText().toString();
String pwd=password.getText().toString();
// Response received from the server
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
Toast.makeText(Login.this, "String is"+response, Toast.LENGTH_LONG).show();
JSONObject jsonResponse = new JSONObject(response);
boolean success = jsonResponse.getBoolean("success");
if (success) {
Intent intent = new Intent(Login.this, welcome.class);
startActivity(intent);
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(Login.this);
builder.setMessage("Login Failed")
.setNegativeButton("Retry", null)
.create()
.show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
Toast.makeText(Login.this, "creds are"+em+pwd+item, Toast.LENGTH_LONG).show();
LoginRequest loginRequest = new LoginRequest(em, pwd,item, responseListener);
RequestQueue queue = Volley.newRequestQueue(Login.this);
queue.add(loginRequest);
}
});
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
item = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
// Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}}
软件包yfsoftwares.foodorderingsystem;
/**
*由用户于2017年3月15日创建。
*/
导入android.app.AlertDialog;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.view.Window;
导入android.view.WindowManager;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Spinner;
导入android.widget.TextView;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.toolbox.volley;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.widget.AdapterView.OnItemSelectedListener;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.List;
公共类登录扩展AppCompativeActivity实现OnItemSelectedListener{
字符串项;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
setContentView(R.layout.activity\u登录);
//旋转元件
微调器微调器=(微调器)findViewById(R.id.spinner1);
//微调器单击侦听器
spinner.setOnItemSelectedListener(此);
按钮btnlogin=(按钮)findViewById(R.id.login);
最终EditText电子邮件=(EditText)findViewById(R.id.mail);
最终EditText密码=(EditText)findViewById(R.id.pwd);
TextView reg=(TextView)findViewById(R.id.reg);
reg.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Intent nxt=新的Intent(getApplicationContext(),RegisterActivity.class);
星触觉(nxt);
}
});
TextView fp=(TextView)findViewById(R.id.U密码);
fp.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Intent nxt=新的Intent(getApplicationContext(),ForgotPasswordActivity.class);
星触觉(nxt);
}
});
//微调器下拉元素
列表角色=新建ArrayList();
添加(“管理员”);
角色。添加(“厨师”);
角色。添加(“客户”);
//为微调器创建适配器
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,角色);
//下拉式布局样式-带单选按钮的列表视图
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
//将数据适配器连接到微调器
spinner.setAdapter(dataAdapter);
btnlogin.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
//获取用户名和密码
字符串em=email.getText().toString();
字符串pwd=password.getText().toString();
//从服务器收到的响应
Response.Listener responseListener=新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
Toast.makeText(Login.this,“String is”+response,Toast.LENGTH_LONG.show();
JSONObject jsonResponse=新的JSONObject(响应);
boolean success=jsonResponse.getBoolean(“success”);
如果(成功){
意图=新意图(Login.this、welcome.class);
星触觉(意向);
}否则{
AlertDialog.Builder=新建AlertDialog.Builder(Login.this);
builder.setMessage(“登录失败”)
.setNegativeButton(“重试”,null)
.create()
.show();
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
};
Toast.makeText(Login.this,“creds is”+em+pwd+item,Toast.LENGTH_LONG).show();
LoginRequest LoginRequest=新的LoginRequest(em、pwd、item、responseListener);
RequestQueue=Volley.newRequestQueue(Login.this);
添加(loginRequest);
}
});
}
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
//关于选择微调器项
item=parent.getItemAtPosition(position.toString();
//显示所选微调器项
//Toast.makeText(parent.getContext(),“Selected:”+项,Toast.LENGTH_LONG.show();
}
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}}
试试这个,我想它会有用的
<?php
$con = mysqli_connect("localhost", "id1083203_root", "root1", "id1083203_subway");
if ($con){
echo 'connected';
$email = isset($_POST['em']) ? $_POST['em'] : "";
$password =isset($_POST['pwd']) ? $_POST['pwd'] : "";
$role = isset($_POST['item']) ? $_POST['item'] : "";
$statement = mysqli_prepare($con, "SELECT * FROM login WHERE email = ? AND password = ? AND role=?");
mysqli_stmt_bind_param($statement, "sss", $email, $password, $role);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $id, $email, $password, $role);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)){
$response["success"] = true;
$response["email"] = $email;
$response["password"] = $password;
$response["role"] = $role;
}
echo json_encode($response);
}
else
{
echo "connection failed";
}
?>
您得到了什么响应?我得到的是false而不是true