2016-02-17 3 views
0

Достижение второй пары глаз.Неопределенная переменная

Я просто не понимаю, что речь идет здесь, я не был в таком же формате на протяжении всего из моего сайта до сих пор я получаю эту ошибку:

<?php 
session_start(); 

include"lib/config.php"; 

$logged_user = $_SESSION['username']; 

$check_admin = "SELECT * FROM `members` WHERE `is_admin` = ".sql_val($logged_user); 
$result = $conn->query($check_admin); 

if ($result->num_rows > 0) { 

while($row = $result->fetch_assoc()) { 
$members_id = $row['members_id']; 
$is_admin = $row['is_admin']; 
$is_mod = $row['is_mod']; 
$username = $row['username']; 
$password = $row['password']; 
$email = $row['email']; 
$login_date = $row['login_date']; 
$login_time = $row['login_time']; 
$session = $row['session']; 
}} 

?> 


<?php 

if ($is_admin == 1){ 

echo 'Is Admin'; 
} 
else 
{ 

echo 'Is not Admin'; 
} 

?> 

это мой выход:

Примечание: Undefined переменной: is_admin в C: \ Wwwroot \ HTDOCS \ сниппет \ is_admin.php на линии 30 не ADMIN

, которые не делают Sence.

+0

введите ваш 'if $ is_admin' внутри цикла while. и если '$ logged_user' является строкой, вы должны указать это в своем запросе и убедиться, что для него есть значение. *бла бла бла*. –

+0

Вы определяете '$ is_admin' внутри цикла while, что означает, что он доступен только там. См. [Ссылка] (http://stackoverflow.com/questions/7337743/using-a-variable-outside-of-the-while-loop-scope). – ccKep

+0

* «... не делаю.» * * Да, так оно и есть, оно делает * совершенным * смысл. –

ответ

1

Необходимо определить $is_admin сверху файла как null. Потому что, если ваше условие if не будет удовлетворять, вы не получите $is_admin в конце файла.

Как это:

<?php 
session_start(); 

include"lib/config.php"; 
$is_admin = ""; 
$logged_user = $_SESSION['username']; 

$check_admin = "SELECT * FROM `members` WHERE `is_admin` = ".sql_val($logged_user); 
$result = $conn->query($check_admin); 

if ($result->num_rows > 0) { 

while($row = $result->fetch_assoc()) { 
$members_id = $row['members_id']; 
$is_admin = $row['is_admin']; 
$is_mod = $row['is_mod']; 
$username = $row['username']; 
$password = $row['password']; 
$email = $row['email']; 
$login_date = $row['login_date']; 
$login_time = $row['login_time']; 
$session = $row['session']; 
}} 

?> 


<?php 

if ($is_admin == 1){ 

echo 'Is Admin'; 
} 
else 
{ 

echo 'Is not Admin'; 
} 

?> 
+0

Несмотря на то, что это исключает уведомление, имейте в виду, что это может не «решить настоящую проблему». Должно ли '$ is_admin' быть строгим истинным или ложным? Если это значение равно null, это означает, что элемент не найден, но в этом случае член всегда должен * всегда * быть найденным. – Litty

0

При проверке, если $is_admin == 1 переменная $is_admin не определена. В своем коде, это значит ...

  • Ваш SQL запрос не вернул ни одной строки, так что while петля никогда не итерацию. Ваша таблица заполнена? Вы запрашиваете правильную таблицу?

  • $row не содержит значения для $row['is_admin']. Эта колонка в вашей таблице? Для этой строки значение NULL?

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