PHP PDO выборки и foreach - я не получаю первый столбец - PullRequest
1 голос
/ 14 февраля 2012

Это мой первый пост, так что я просто знакомлюсь с тем, как работает сообщество, поэтому я тоже могу помочь, позже ...

У меня есть index.php и db.php для тестирования PDO в очень маленьком и простом приложении, в первом идет html, а во втором - соединение с базой данных.

index.php

 <h1><?php echo $fjoin_bookname; ?></h1>
    <?php foreach($join as $j): ?>
        <tr>
            <td> 
                <?php echo 'Page: '. $j['pageNumber']; ?>
            </td>
            <td>
                <?php echo $j['pageNote']; ?>
            </td>
        </tr>
    <?php endforeach; ?>

db.php

//get books and pages Join
    $query='SELECT * 
            FROM books
                INNER JOIN pages
                ON books.bookID = pages.bookID
            ORDER BY pageNumber ASC';

    $join = $db->query($query);
    $fjoin = $join->fetch();
    $fjoin_bookname = $fjoin['bookName'];

Это приложение, которое получает номера страниц с соответствующей заметкой из книги, это поможет отслеживать несколько книг на разных устройствах.

Проблема: Я не получаю первый ряд из таблицы страниц. Он работал нормально, пока я не вставил метод извлечения

$fjoin = $join->fetch();
$fjoin_bookname = $fjoin['bookName'];

Вопрос Кто-нибудь будет так любезен, чтобы помочь мне решить это?

1 Ответ

1 голос
/ 14 февраля 2012

Когда вы звоните

$join->fetch()

возвращает элемент из текущей позиции и перемещает курсор к следующей. Вы можете извлечь все элементы в var, а затем получить fjoin_bookname из первого элемента:

db.php

//get books and pages Join
$query='SELECT * 
        FROM books
            INNER JOIN pages
            ON books.bookID = pages.bookID
        ORDER BY pageNumber ASC';

$statement = $db->query($query);
$join = $statement->fetchAll();
$fjoin = $join[0];
$fjoin_bookname = $fjoin['bookName'];
...