2017-02-02 2 views
0

Я попытался создать функцию регистрации в Android-приложении. Я попытался отправить данные из своего приложения в базу данных, используя этот файл Php. Тем не менее, я получил сообщение br/error, когда я нажал кнопку регистрации в своем приложении. Похоже, что mysqli_fetch_array не работает. Кто-нибудь знает, как решить эту проблему? Благодаря!Php mysqli_fetch_array не работает

<?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

Вы находитесь в опасности для инъекций SQL ... – wogsland

+1

Ваш сценарий находится под угрозой [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent- sql-injection-in-php) Посмотрите, что случилось с [Little Bobby Tables] (http://bobby-tables.com/) Даже если вы избегаете входных данных, это небезопасно! (http: // stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) Используйте [подготовленные параметризованные утверждения] (http://php.net/manual/en/mysqli.quickstart.prepared -statements.php). –

+0

что вы видите сейчас, 'ошибка'? –

ответ

0

Я думаю, вы должны удалить проверку Исеть. Он всегда будет возвращать истину, несмотря ни на что. Вместо этого проверяйте счет.

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

, даже если он вернет true, я получу имя пользователя или адрес электронной почты уже существует, но теперь он возвращает только мне
, так это значит, что это не проблема проверки проблемы? –

+0

Так что еще часть работает всегда? –

+0

нет, добавляю echo 't1'; наверху $ check = mysqli_fetch_array и echo 't2'; в нижней части mysqli_fetch_array. В конце концов, он вернет мне t1. Значит, это означает, что остановка кода в mysqli_fetch_array –

Смежные вопросы