Как выбрать несколько записей из SQL и вставить в сессию

Я ищу, как вставить несколько записей из таблицы SQL в переменную сеанса или в несколько уникальных переменных сеанса.

$userID = $_SESSION['user']['id']; 

$coursequery = " 
            SELECT
                coursename,
                location,
                description 
            FROM courses 
            WHERE 
                teacherID = '$userID' 
        "; 

        try 
        { 
            $stmt = $db->prepare($coursequery); 
            $result = $stmt->execute(); 
        } 
        catch(PDOException $ex) 
        {  
            die("Failed to run query: " . $ex->getMessage()); 
        } 

        $row = $stmt->fetch(); 

            $_SESSION['courseinfo'] = $row;   

Таблица "курсы" содержит несколько записей, каждая из которых - идентификатор учителя, идентифицируемый с текущим идентификатором пользователя, определенным в начале. Когда я печатаю_r($_SESSION['courseinfo']); он отображает только одну из записей в таблице.

Я пытаюсь создать цикл, который отображает всю информацию, собранную для каждой записи, так как вы не будете точно знать, сколько записей вы получите в любой момент времени. Любые ответы с благодарностью!

2 ответа

Решение

Вы можете получить все свои записи, изменив документ fetch -> fetchAll()

$rows = $stmt->fetchAll(); 

Сессии также могут хранить массивы и объекты (они сериализуются автоматически). Таким образом, вы можете просто сохранить весь набор результатов.

$_SESSION['courseinfo'] = $rows;

Примечание: рассмотрите возможность использования другого места хранения для всех возвращаемых данных, если их много, а в хранилище сеанса только идентификаторы.

$userID = $_SESSION['user']['id']; 

$coursequery = " 
            SELECT
                coursename,
                location,
                description 
            FROM courses 
            WHERE 
                teacherID = '$userID' 
        "; 

        try 
        { 
            $stmt = $db->prepare($coursequery); 
            $result = $stmt->execute(); 
        } 
        catch(PDOException $ex) 
        {  
            die("Failed to run query: " . $ex->getMessage()); 
        } 

        while ($row = $stmt->fetch()):

         $row['YourColumn'];

         endwhile;

Используйте цикл while() для извлечения всей записи согласно вашему запросу

Другие вопросы по тегам