Получить некоторые записи с помощью цикла while и некоторые без цикла

Я хочу показать некоторые записи с циклами while, а некоторые без циклов. Но цикл while игнорирует первую запись и показывает другие записи.

    if (isset($_SESSION['patient_no'])) {
                $patient_id = $_SESSION['patient_no'];
                $sql = $db->prepare("select * from patient_record JOIN medicine_potency ON  reference_no=:reference_id and patient_code=:reference_no");
                if (!$sql) {
                    echo $sql->errorInfo();
                } else {
                    $sql->bindParam('reference_id', $patient_id, PDO::PARAM_INT);
                    $sql->bindParam('reference_no', $patient_id, PDO::PARAM_INT);
                    $sql->execute();
                    $sql->bindColumn('code', $id);
                    $sql->bindColumn('reference_no', $reference_no);
                    $sql->bindColumn('patient_name', $patient_name);
                    $sql->bindColumn('father_name', $father_name);
 if ($sql->columnCount() > 0) {
                     $sql->fetch(PDO::FETCH_ASSOC);

                            ?>
                        <tr bgcolor = " #005A04"><td colspan = "2" style = "text-align: center; color:#CCFFBB">Personal Information</td></tr>
                            <tr>
                                <td>Reference No</td>
                                <td><?php echo $reference_no; ?></td>
                            </tr>
                        <tr>
                                <td>Patient Name</td>
                                <td><?php echo $patient_name; ?></td>
                        </tr><?php while ($sql->fetch(PDO::FETCH_ASSOC)) {
                           ?>
                            <tr>
                                <td><?php echo $medicine; ?></td>
                                <td><?php echo $potency; ?></td>
                            </tr>

каждый раз, когда вы выполняете $ sql-> fetch (PDO :: FETCH_ASSOC); запись читается. Ваша первая загрузка вне времени

FatFreddy 18.04.2018 13:12

Добро пожаловать в SO. Пожалуйста, посмотрите здесь, чтобы узнать, как улучшить ваши вопросы (форматирование, корректура, предоставление кода и т. д.): stackoverflow.com/help/how-to-ask

petezurich 18.04.2018 22:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
50
2

Ответы 2

Простое решение: вы можете превратить цикл while в цикл do-while, поэтому при первой итерации будет использоваться ваша первая выборка. это работает, только если у вас есть одна выборка перед циклом, очевидно.

Но я не уверен, в чем смысл в вашем случае, вы делаете ту же самую выборку перед циклом, так зачем вам это вообще нужно?

Используйте синтаксис OFFSET в своем операторе MYSQL:

$sql = $db->prepare("select * from patient_record JOIN medicine_potency ON  reference_no=:reference_id and patient_code=:reference_no OFFSET 1");

Это пропустит первый результат и пойдет дальше.

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