繁体   English   中英

如何使用Android Volley将数据发布到mysql中

[英]how to post data into mysql using android volley

我只是想创建一个注册页面,其中存储了我确实发布过的用户数据,但是没有数据存储在数据库phpfile中

<?php 
    if($_SERVER['REQUEST_METHOD']=='GET'){
        $username = $_POST['username'];
        $email = $_POST['email'];
        $password = $_POST['password'];
        $name = $_POST['name'];
        $phonenum = $_POST['phonenum'];
        $address = $_POST['addresstext'];
        require_once('config.php');
        $sql = "INSERT INTO users (name,username,email,password,phonenum,address) VALUES ('$name','$username','$email','$password','$phonenum','$address')";
        $r = mysqli_query($dp,$sql);
        if($r){
         echo "Successfully Registered";
        }
        else{
            echo "Could not register";
        }       
        mysqli_close($dp);
    }
?>

注册页面

public class DrSignup extends Activity implements View.OnClickListener{

    public static final String REGISTER_URL = "http://giclub.esy.es/Register.php";

    public static final String KEY_USERNAME = "username";
    public static final String KEY_PASSWORD = "password";
    public static final String KEY_EMAIL = "email";
    public static final String KEY_NAME = "name";
    public static final String KEY_PHONENUM = "phonenum";
    public static final String KEY_ADDRESS = "address";

    EditText usernametext,nametext,emailtext,phonenumtext,addresstext,passwordtext;

    TextView link_login;
    ImageView profileimg;
    Button btn_signup;
    private static int RESULT_LOAD_IMAGE = 1;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.drsingup);
        link_login = (TextView) findViewById(R.id.link_login);
        profileimg = (ImageView) findViewById(R.id.profileimg);
        btn_signup = (Button) findViewById(R.id.btn_signup);
        usernametext = (EditText) findViewById(R.id.username);
        nametext = (EditText) findViewById(R.id.name);
        emailtext = (EditText) findViewById(R.id.email);
        phonenumtext = (EditText) findViewById(R.id.phonenumber);
        addresstext = (EditText) findViewById(R.id.addresstext);
        passwordtext = (EditText) findViewById(R.id.password);
        link_login.setOnClickListener(this);
        profileimg.setOnClickListener(this);
        btn_signup.setOnClickListener(this);

    }
    @Override
    public void onClick(View view) {
        Intent I = new Intent(this,WelcomeActivity.class);
        if (view == link_login)
        {
            startActivity(I);
            finish();
        }
        else if (view == profileimg){
            Intent i = new Intent(
                    Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, RESULT_LOAD_IMAGE);
        }
        else if (view == btn_signup){
            registerUser();

        }

    }

    private void registerUser()  {
        final String username = usernametext.getText().toString().trim();
        final String password = passwordtext.getText().toString().trim();
        final String email = emailtext.getText().toString().trim();
        final String name = nametext.getText().toString().trim();
        final String phonenum = phonenumtext.getText().toString().trim();
        final String address = addresstext.getText().toString().trim();


        StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Toast.makeText(DrSignup.this,response,Toast.LENGTH_LONG).show();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(DrSignup.this,error.toString(),Toast.LENGTH_LONG).show();
                    }
                }){
            @Override
            protected Map<String,String> getParams(){
                Map<String,String> params = new HashMap<String, String>();
                params.put(KEY_USERNAME,username);
                params.put(KEY_PASSWORD,password);
                params.put(KEY_EMAIL, email);
                params.put(KEY_NAME,name);
                params.put(KEY_ADDRESS,address);
                params.put(KEY_PHONENUM, phonenum);
                return params;
            }

        };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            profileimg.setImageBitmap(BitmapFactory.decodeFile(picturePath));

        }
    }
    }

什么都没烤,logcat中显示无错误,这是什么问题?

实际上,您没有得到任何响应,因为在服务器端,您正在将请求方法与get进行比较,但是实际上您是在向服务器发送数据,而不是从中检索数据,因此请像这样进行更改

<?php 
if($_SERVER['REQUEST_METHOD']=='POST'){
    $username = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password'];
    $name = $_POST['name'];
    $phonenum = $_POST['phonenum'];
    $address = $_POST['addresstext'];
    require_once('config.php');
    $sql = "INSERT INTO users (name,username,email,password,phonenum,address) VALUES ('$name','$username','$email','$password','$phonenum','$address')";
    $r = mysqli_query($dp,$sql);
    if($r){
     echo "Successfully Registered";
    }
    else{
        echo "Could not register";
    }       
    mysqli_close($dp);
}
 ?>

@ Amr93我认为您正在以post方法和您要检查的API发送数据

“请求方法== GET”

看这个

取代这个

($ _SERVER ['REQUEST_METHOD'] =='GET'){

($ _SERVER ['REQUEST_METHOD'] =='POST'){

更改

if($_SERVER['REQUEST_METHOD']=='GET')

if($_SERVER['REQUEST_METHOD']=='POST')

上传图片 :

  1. 在活动中上传位图并编码为字符串
  2. 在服务器端,声明变量以为每个图像分配唯一名称,并声明要在其中存储图像的路径

    例如: $path = "uploads/$id.png";

    $actualpath = "http://url_path/xyz/$path ;

  3. 之后,将$actualpath插入数据库

    注意:不要忘记在服务器端解码

您在Android代码中使用请求类型“ POST”

StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,

并在php代码中使用“ GET”请求进行处理。 所以如果条件代码不执行

if($_SERVER['REQUEST_METHOD']=='GET')

更改为

if($_SERVER['REQUEST_METHOD']=='POST')

它将解决您的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM