Ich benutze Android Studio und Verbindung zu einer Datenbank. Ich habe es geschafft, Informationen aus der Datenbank abzurufen und eine Anmeldefunktion zu erstellen, die gut funktioniert. Ich versuche nun, eine Registrierungsfunktion zu erstellen. Um sich zu registrieren, muss der Benutzer nur seinen Vornamen, Nachnamen, Benutzernamen und Passwort eingeben. Ich habe versucht, einem Tutorial aus dem vereinfachten Coding zu folgen, aber aus irgendeinem Grund kann ich es nicht zum Laufen bringen. In dem Code ein Toast verwendet wird eine Fehlermeldung angezeigt werden, wenn man aus dem PHP-Skript, aber mit meinem Code nur der Toast Nachricht zeigt
zurückgegeben Dies ist der PHP-Skript ist für diese Funktion Ich verwendePHP Skript zum Einfügen gibt nur <br /> zurück und nicht die Daten in die Datenbank einfügen
<?php
$forename = $_GET['forename'];
$surname = $_GET['surname'];
$username = $_GET['username'];
$password = $_GET['password'];
$dob = $_GET['dob'];
if($forename == '' || $surname == '' || $username == '' || $password == '' || $dob == ''){
echo 'please fill all values';
}else{
require_once('dbConnect.php');
$sql = "SELECT * FROM users WHERE username='$username'";
$check = mysqli_fetch_array(mysqli_query($con,$sql));
if(isset($check)){
echo 'username already exist';
}else{
$sql = "INSERT INTO users (forename,surname,username,password,dob) VALUES('$forename','$surname','$username','$password','$dob')";
if(mysqli_query($con,$sql)){
echo 'successfully registered';
}else{
echo 'oops! Please try again!';
}
}
mysqli_close($con);
}
?>
Und dies ist die relevanten Teile meiner Java-Code innerhalb der Anwendung
@Override
public void onClick(View v){
if(v == buttonReg){
registerUser();
}
}
public void registerUser(){
String forename = eTxtForename.getText().toString().trim().toLowerCase();
String surname = eTxtSurname.getText().toString().trim().toLowerCase();
String username = eTxtUserName.getText().toString().trim().toLowerCase();
String password = eTxtPass.getText().toString().trim().toLowerCase();
register(forename, surname, username, password);
}
private void register(String forename, String surname, String username, String password){
String urlSuffix = "?forename="+forename+"&surname="+surname+"&username="+username+"&password="+password;
class RegisterUser extends AsyncTask<String, Void, String>{
ProgressDialog loading;
@Override
protected void onPreExecute(){
super.onPreExecute();
loading = ProgressDialog.show(RegisterActivity.this, "Please Wait", null, true, true);
}
@Override
protected void onPostExecute(String s){
super.onPostExecute(s);
loading.dismiss();
Log.d("From s", s);
Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(String... params){
String s = params[0];
BufferedReader bufferedReader = null;
try{
URL url = new URL(Config.URL_REGISTER+s);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String result;
result = bufferedReader.readLine();
return result;
}catch (Exception e){
return null;
}
}
}
RegisterUser ru = new RegisterUser();
ru.execute(urlSuffix);
}
ich denke, dass alles, was ist, die Sie sehen müssen, aber lassen Sie mich wissen, ob ich etwas hinzufügen müssen sonst
EDIT: Wie vorgeschlagen habe ich HttpRequester verwendet, um eine Get-Anfrage zu senden, um zu sehen, was der Fehler ist, den ich bekomme. Der Fehler sagt:
Warnung: mysqli_fetch_array() erwartet 1 Parameter in /home/u613295501/public_html/register.php on line
so Leitung 14 MySQLi_Result, boolean gegeben werden, dies ist Zeile
$check = mysqli_fetch_array(mysqli_query($con,$sql));