0

This question may be a duplicate but i couldn't find any solution in the questions.

It is a simple login method.

Basicly i am taking two parameters from the user and send them to the server, the server searches the database and return the result which matches the parameters that i send. And if there is no matching result than the method simply returns null so i can ask the user to correct the user name and the password.

Here is the code that i use to send the parameters;

    @Override
    protected User doInBackground(Void... params) {

        ArrayList<NameValuePair> dataToSend = new ArrayList<>();
        dataToSend.add(0,new BasicNameValuePair("username",user.username));
        dataToSend.add(1,new BasicNameValuePair("password",user.password));



        HttpParams httpRequestParams = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpRequestParams,CONNECTION_TIMEOUT);
        HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);

        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://www.okanyakit.com/tez/FetchUserData.php");

        User returnedUser = null;

        try {
            post.setEntity(new UrlEncodedFormEntity(dataToSend));
            HttpResponse httpResponse = client.execute(post);

            HttpEntity entity = httpResponse.getEntity();
            String result = EntityUtils.toString(entity);
            JSONObject jObject = new JSONObject(result);

            if (jObject.length() == 0){
                returnedUser = null;
            }else {

                String username = jObject.getString("username");
                String password = jObject.getString("password");
                String email = jObject.getString("email");
                String  phonenumber = jObject.getString("phonenumber");
                String bloodtype = jObject.getString("bloodtype");
                String  birthday = jObject.getString("birthday");
                String address = jObject.getString("address");


                returnedUser = new User(username,password,email,phonenumber,bloodtype,birthday,address);

            }


        }catch (Exception e){
            e.printStackTrace();
        }


        return returnedUser;
    }

In here i am able to put both of the username and password to the list, but when it connects to the server i get an error and it says i sent only one parameter while it was expecting two.

I don't think there is a problem with my php code but i am not sure, so here it is ;

    <?php   
$con=mysqli_connect("89.19.30.210","okan_tez","okan_tez","okan_tez_andro");

$username = $_POST["username"];
$password = $_POST["password"];




mysqli_close($con);
$statement = mysqli_prepare("SELECT * FROM user WHERE username = ? AND password = ? ");
mysqli_stmt_bind_param($statement, "ss",$username, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $userid, $username, $password, $email, $phonenumber, $bloodtype, $birthday, $address);

$user = array();
while (mysqli_stmt_fetch($statement)){
    $user [username] = $username;
    $user [password] = $password;
    $user [email] = $email;
    $user [phonenumber] = $phonenumber;
    $user [bloodtype] = $bloodtype;
    $user [birthday] = $birthday;
    $user [address] = $address;

}
echo json_encode($user);
mysqli_stmt_close($statement);


?>

And here is the debug screenshot ;

enter image description here

here is what is says in green font


Warning: mysqli_prepare() expects exactly 2 parameters, 1 given in /home/okanyakit.com/httpdocs/tez/FetchUserData.php on line 11

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, null given in /home/okanyakit.com/httpdocs/tez/FetchUserData.php on line 12

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, null given in /home/okanyakit.com/httpdocs/tez/FetchUserData.php on line 13

Warning: mysqli_stmt_store_result() expects parameter 1 to be mysqli_stmt, null given in /home/okanyakit.com/httpdocs/tez/FetchUserData.php on line 14

Warning: mysqli_stmt_bind_result() expects parameter 1 to be mysqli_stmt, null given in /home/okanyakit.com/httpdocs/tez/FetchUserData.php on line 15

Warning: mysqli_stmt_fetch() expects parameter 1 to be mysqli_stmt, null given in /home/okanyakit.com/httpdocs/tez/FetchUserData.php on line 18
[]
Warning: mysqli_stmt_close() expects parameter 1 to be mysqli_stmt, null given in /home/okanyakit.com/httpdocs/tez/FetchUserData.php on line 29

So what is the problem and how can i solve it ? Please the project deadline is in two days and i have lots of more problems. And i have a similiar problem with the registering part. I think if i can solve this i will be able to solve that too. Thanks.

1 Answer 1

1

You shouldn't close the connection here :

mysqli_close($con);
$statement = mysqli_prepare("SELECT * FROM user WHERE username = ? AND password = ? ");

And mysqli_prepare needs $con argument (http://php.net/manual/fr/mysqli.prepare.php) :

$statement = mysqli_prepare($con,"SELECT * FROM user WHERE username = ? AND password = ? ");
Sign up to request clarification or add additional context in comments.

1 Comment

Thank you so much this may be most basic mistake i have ever made. Thank you again :D

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.