SQL select from query возвращает неверную информацию, кодовый указатель - PullRequest
0 голосов
/ 01 апреля 2019

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

В модели:

public function get_profile_information() { 

    $query = $this->db->query("SELECT profileText from users WHERE 
    idNumber = ?", $this->session->userdata('username'));

    return $query->result_array();
}

В контроллере:

public function loginprocess() { 

    $username = $this->input->post('idNumber');
    $password = $this->input->post('passWd');

    $query = $this->db->query("select * from users where idNumber='".$username."' and passWd='$password'");

    $row = $query->num_rows();

    if ($row) {

        $this->session->set_userdata(array('username' => $username));
        $sessionID = $this->session->userdata('username');

        $data['title'] = 'Profile';
        $data['profiletext'] = $this->news_model >get_profile_information();
        $data['sessionID'] = $this->session->userdata('username');

        $this->load->view('templates/header', $data);
        $this->load->view('news/profile', $data);
        $this->load->view('templates/footer');

    } else { 

        $data['error'] = 'Invalid Login Details';
        $data['title'] = 'Login';

        $this->load->view('templates/header', $data);
        $this->load->view('news/login', $data);
        $this->load->view('templates/footer');
    }
}

По виду:

<head>

<style type="text/css">

</style>

</head>

Welcome to the <?php echo $title; ?> page, <?php echo $sessionID; ?>

<?php var_dump($profiletext); ?>

<?php echo anchor('login/logout', 'logout'); ?>

На веб-странице запрос на получение текста профиля из базы данных на основе зарегистрированного пользователя дает такой результат

array(1) { [0]=> array(1) { ["profileText"]=> string(17) "Test Profile Text" } } 

Я надеялся просто отобразить «Текст профиля теста». Мне не удалось понять, что не так, я довольно плохо знаком с codeigniter и php, поэтому у меня нет знаний, чтобы решить эту проблему.

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Контроллер:
Сделайте небольшое изменение в строке ниже

//$data['profiletext'] = $this->news_model >get_profile_information();//old line
$data['profiletext'] = $this->news_model->get_profile_information();//changes

Модель:
Чтобы получить только «Текст профиля теста», без каких-либо изменений в вашем представлении

public function get_profile_information() { 

    $query = $this->db->query("SELECT profileText from users WHERE idNumber = ".$this->session->userdata('username'));
    return $query->row('profileText');//changes
}
0 голосов
/ 01 апреля 2019

Вы должны использовать echo вместо var_dump ()

Описание:

var_dump (mixed $ expression [, mixed $ ...])): void Эта функция отображает структурированную информацию об одном или нескольких выражениях, которая включает его тип и значение.Массивы и объекты исследуются рекурсивно со значениями с отступом, чтобы показать структуру.

Все открытые, частные и защищенные свойства объектов будут возвращены в выходные данные, если объект не реализует метод __debugInfo () (реализован в PHP 5.6.0).

Заменить

<?php var_dump($profiletext); ?>

На

<?php echo $profiletext[0]['profileText]; ?>

echo печатает переменную (и) напрямую, как нам требуется на наших сайтах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...