Примечание PHP: Неопределенное смещение: 0 с использованием datarow - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть веб-сайт xampp с небольшой игрой, после переустановки моего компьютера игра не будет работать после входа в систему.

Обычно вход в систему работает безупречно, но в некоторых его частях происходит сбой:

if($datauser[0]['factionid'] == 0)
{
    header('Location: company.php');
    exit();
}

В этот момент он перенаправляет меня на company.php, но мой factionid = 1, и когда я его удаляю, он показывает, что смещение 0 не определено.В основном он не может загрузить мою информацию о пользователе.

Это запрос информации $ datauser.

include 'libs/database.php';
include 'config/database.php';

$db = new Database(DB_TYPE, DB_HOST, DB_NAME, DB_USER, DB_PASS);

$sth = $conn->prepare("SELECT username, is_admin , grade, factionid, clanid, credits, uridium, unobtanium, premium_time, vip_time, rankpoints, user_kill, npc_kill, max_hp, speed, damages, 
max_shield, drones, apis_built, zeus_built, laser_count, shield_count, speed_count, logfiles, booty_keys, drone_parts, skilltree, booster_dmg_time,
booster_shd_time, booster_spd_time, booster_npc_time, shipId, undermaintenance
FROM users WHERE id = :id LIMIT 1"); 
$sth->execute(array(
                ':id' => $_SESSION['player_id']
            ));
$datauser = $sth->fetchAll();

Теперь я надеюсь, что объяснил достаточно, и кто-то может мне помочь.Я буду готов ответить на любые вопросы или написать код для awnser.

EDIT # 1: он отлично работает на моем удаленном сервере с IIS, но не на локальном сервере XAMPP.

EDIT # 2:если он плохо работает, измените оператор подготовки на:

$sth = $db->prepare("SELECT * FROM users WHERE id = :id LIMIT 1"); 

, так почему же он работает с *, но не со всеми моими значениями?

РЕДАКТИРОВАТЬ # 3: НАЙТИ РЕШЕНИЕ, я искалзначение "недообеспеченности", но оно отсутствовало в моей локальной базе данных.Спасибо всем, кто помог мне.

Привет, Кевин

1 Ответ

0 голосов
/ 25 ноября 2018

Чтобы удалить уведомление, вам нужно проверить смещение массива:

if(isset($datauser[0]['factionid']) && $datauser[0]['factionid'] == 0)

Также проверьте результат выборки в $ datauser с помощью var_dump ($ datauser);или print_r ($ datauser);

...