Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接android与php-mysql_Php_Android_Mysql_Xampp - Fatal编程技术网

连接android与php-mysql

连接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

我已经将我的Android应用程序与运行在000.webhost.com上的php mysql xampp服务器连接,我面临的问题是php脚本给了我错误的响应,因为我是php新手,所以我无法解决这个问题

这是我的登录脚本:

<?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