2016-09-20 2 views
1

У меня есть 3 php-файла в моем приложении для Android - dbConnect.php, который подключается к базе данных, volleyLogin.php, которая входит в систему пользователя, и UserDetails.php, которая получает некоторую информацию о зарегистрированном пользователе.Почему в мой PHP-файл не включены мои переменные?

Они отлично работают при работе с файлами в моем браузере, но при запуске из моего приложения для Android UserDetails.php не работает. Он продолжает возвращать «0 результатов», и мне говорят, что переменная username не определена, хотя я использую оператор include, который должен вставлять содержимое одного файла PHP в другой файл PHP.

Мой dbConnect.php выглядит следующим образом:

<?php 

define ('HOST', 'localhost'); 
define ('USER', 'root'); 
define ('PASS', 'password'); 
define ('DB', 'dbname'); 

$con = mysqli_connect("localhost", "root", "password", "dbname") or die('Unable to Connect'); 

?> 

Мой volleyLogin.php как это:

<?php 

if($_SERVER['REQUEST_METHOD']=='POST'){ 
$username = $_POST['username']; 

include('dbConnect.php'); 
$sql = "SELECT * FROM user WHERE username = '$username'"; 
$result = mysqli_query($con,$sql); 
$check = mysqli_fetch_array($result); 
if(isset($check)){ 

     echo 'success'; 
} else { 
     echo 'Could not log in'; 
} 
} 

?> 

И UserDetails.php выглядит следующим образом:

<?php 
include('dbConnect.php'); 
include('volleyLogin.php'); 

$resultSet = $con->query("SELECT category.cat_name FROM category INNER JOIN user ON category.user_id = 
user.user_id WHERE user.username = '$username' ") 

or die($con->error); 

if ($resultSet->num_rows > 0) { 

     while($rows = $resultSet->fetch_assoc()) { 

$catname = $rows['cat_name']; 

     echo "<p> Name: $catname </p>"; 
}} 
     else { 
    echo "0 results"; 
} 
//echo "userdetails.php works"; 

$con->close(); 

?> 

Проблема заключается в следующем:

$resultSet = $con->query("SELECT category.cat_name FROM category INNER JOIN user ON category.user_id = 
user.user_id WHERE user.username = '$username' ") 
+0

Используйте ' require' вместо 'include' и проверить журнал. –

ответ

1

Ваша логика неверна: функции mysqli_*() в основном либо возвращают объект/дескриптор результата, либо логическое значение true (успех)/ложь (сбой). Они ВСЕГДА возвращают что-то, поэтому имеющие:

$check = mysqli_fetch_array($result); 
if(isset($check)){ 

неправ. $check ВСЕГДА будет установлен. Вы должны явно проверить логическое значение FALSE, чтобы обнаружить отказ:

if ($check === false) { 
    die(mysqli_error($con)); 
} 

И обратите внимание, что ни в одном из вашего образца кода вы определяете $username, поэтому ваш запрос делает WHERE user.username = '', и, вероятно, соответствующие 0 строки

+0

Я рассмотрю ваш ответ, но «$ username» не определен в 'volleyLogin.php', когда я говорю' $ username = $ _POST ['username']; '? – CHarris

+0

только если сообщение выполнено ... –

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