2016-04-13 2 views
0

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)); 

Antwort

0

der
wird ein pHP-Fehler angezeigt wird, müssen Sie eine Erhaltungs-Anforderungs-Absender verwenden .... wie Post Mann in Chrom Speicher eine Dummy-Erhaltungs-Anforderung zu senden und überprüfen, die voller Fehler ... hoffe, ich half

0

So stellt sich heraus, ich bin nur ein Idiot, wie ich den Namen der Tabelle zu user_info vor einer Weile änderte und komplett vergessen habe. Danke an alle, die versucht haben, es auszuarbeiten, und vor allem dank Aas, da mir das Senden einer Dummy-Anfrage definitiv geholfen hat, herauszufinden, was falsch war.

Verwandte Themen