2017-02-02 8 views
0

Ich habe versucht, ein Register Login-Funktion in Android App zu erstellen. Ich habe versucht, Daten von meiner App in die Datenbank zu senden, indem Sie diese PHP-Datei verwenden. Allerdings habe ich einen Br/Fehler erhalten, als ich auf "Registrieren" in meiner App geklickt habe. Sieht aus wie mysqli_fetch_array nicht funktioniert. Weiß jemand, wie man dieses Problem löst? Vielen Dank!PHP mysqli_fetch_array funktioniert nicht

<?php 
if($_SERVER['REQUEST_METHOD']=='POST'){ 
    $name = $_POST['name']; 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $email = $_POST['email']; 

    if($name == '' || $username == '' || $password == '' || $email == ''){ 
     echo 'please fill all values'; 
    }else{ 
     require_once('dbConnect.php'); 
     $sql = "SELECT * FROM users WHERE username='$username' OR email='$email'";   
     $result=mysqli_query($con,$sql); 
     $check = mysqli_fetch_array($result,MYSQLI_BOTH); 
     if(isset($check)){  
      echo 'username or email already exist'; 
     }else{   
      $sql = "INSERT INTO users (name,username,password,email) VALUES('$name','$username','$password','$email')"; 
      if(mysqli_query($con,$sql)){ 
       echo 'successfully registered'; 
      }else{ 
       echo 'oops! Please try again!'; 
      } 
     } 
     mysqli_close($con); 
    } 
} else{ 
echo 'error'; 
} 

dbConnect.php

<?php 
define('HOST','localhost'); 
define('USER','username'); 
define('PASS','password'); 
define('DB','database'); 

$con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 
+0

Sie sind mit einem Risiko für SQL-Injection ... – wogsland

+1

Ihr Skript ist in Gefahr [SQL-Injection-Angriff] (http://stackoverflow.com/questions/60174/how-can-i-prevent- sql-injection-in-php) Sehen Sie sich an, was mit [Little Bobby Tables] passiert ist (http://bobby-tables.com/) Sogar [wenn Sie Eingaben entgehen, ist es nicht sicher!] (http: // stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-es-cape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared -statements.php). –

+0

Was siehst du jetzt, 'Fehler'? –

Antwort

0

Ich glaube, Sie isset Check entfernen sollte. Es wird immer wieder wahr, egal was passiert. Zähle stattdessen die Zählung.

if(count($check)){  
    echo 'username or email already exist'; 
}else{   
    $sql = "INSERT INTO users (name,username,password,email) VALUES('$name','$username','$password','$email')"; 
    if(mysqli_query($con,$sql)){ 
     echo 'successfully registered'; 
    }else{ 
     echo 'oops! Please try again!'; 
    } 
} 
+0

sogar es wieder wahr, ich werde Benutzername oder E-Mail bereits erhalten, aber jetzt gibt es nur mir
, so bedeutet es, dass dies nicht isset Check Problem ist? –

+0

Also sonst läuft Teil immer? –

+0

nein, ich füge echo 't1' hinzu; oben auf $ check = mysqli_fetch_array und echo 't2'; im unteren Bereich von mysqli_fetch_array. Letztendlich gibt es mir nur t1 zurück. Also, es bedeutet, dass der Code bei mysqli_fetch_array stoppen –