I’m working on an application that registers users in a database of a domain I have. I developed it using Android Studio, and I’m having some problems handling the users info to the php file using the POST method.
The main problem I have is that my app returns a success while transfering the data to the database, but when I look at it it’s empty.
Here’s my Java code:
package com.test.application; import com.android.volley.Response; import com.android.volley.toolbox.StringRequest; import java.util.HashMap; import java.util.Map; public class RegisterRequest extends StringRequest { private static final String REGISTER_REQUEST_URL="http://www.mywebsite.com/Register.php"; private Map<String,String> params; public RegisterRequest(String user, String password, String email, Response.Listener<String> listener){ super(Method.POST, REGISTER_REQUEST_URL, listener, null); params = new HashMap<>(); params.put("name", user); params.put("password", password); params.put("useremail", email); } @Override public Map<String, String> getParams() { return params; } }
and here’s my PHP code that recieves the data:
<?php $con = mysqli_connect("bbdd.mywebsite.com", "user", "password", "database"); $Username = $_POST["name"]; $Password = $_POST["password"]; $UserEmail = $_POST["useremail"]; $statement = mysqli_prepare($con, "INSERT INTO AccountsInfo (Username, Password, UserEmail) VALUES (?, ?, ?)"); mysqli_stmt_bind_param($statement, "ssis", $Username, $Password, $UserEmail); mysqli_stmt_execute($statement); $response = array(); $response["success"] = true; echo json_encode($response); ?>
Advertisement
Answer
Assuming everything else is correct, your parameter type specification in the bind call has an i
(integer) that doesn’t match any parameter. For 3 string parameters, you’ll want to use sss
:
mysqli_stmt_bind_param($statement, "sss", $Username, $Password, $UserEmail);
You should enable error reporting so that things don’t just fail silently. See how to get a detailed error report when a php-mysql script fails?