Эх .. Прошу прощения за такой простой вопрос, но я не смог найти хорошего ответа ни в Google, ни в stackoverflow ... вот что я хочу сделать.

Я сохраняю объявления в MySQL, а затем показываю их пользователям, использующим

<?php while($announcerow = mysqli_fetch_assoc($announceResult)): ?>

Затем есть кнопка для администраторов, чтобы редактировать их, открывается модальное окно, и администратор может выбрать, какое объявление он хочет редактировать, ну, я тоже пытаюсь показывать объявления таким же образом, но если я сделаю это, объявления больше не будут отображаться. так что я могу использовать mysqli_fetch_assoc только один раз в запросе, как я вижу ...

Я думал сохранить их в массиве и использовать их позже, но потом я не знаю, как получить доступ к массиву позже.

Например, я сохраняю их так:

while($row = mysql_fetch_assoc($query)){

  // add each row returned into an array
  $array[] = $row;


}

Но как мне показать объявления позже для пользователей? Кроме того, мои объявления имеют идентификатор, заголовок, URL и описание, именно так я показываю их прямо сейчас.

<?php while($announcerow = mysqli_fetch_assoc($announceResult)): ?>
                <a data-toggle="tooltip" title="<?php echo $announcerow['Description']; ?>" target="_blank" href="<?php echo $announcerow['URL']; ?>"><p class="text-light-blue"><span class="fa fa-external-link"></span> <?php echo $announcerow['Title']; ?><span class="text-muted"> - by <?php echo $announcerow['Author']; ?> (<?php echo $announcerow['Date']; ?>)</span></p></a>
            <?php endwhile; ?>

Как я покажу их из массива?

Извините за этот нубистский вопрос ... не могу найти ответ.

Я даже попробовал mysql_data_seek (); так что я могу использовать fetch больше раз, но я получил эту ошибку:

Warning: mysql_data_seek(): supplied argument is not a valid MySQL result resource in 

Я пробовал это

while($row = mysql_fetch_assoc($announceResult)){
            $array[] = $row;
        }

И

<?php foreach($array as $datum): ?>
                 <a data-toggle="tooltip" title="<?php echo $datum['Description']; ?>" target="_blank" href="<?php echo $datum['URL']; ?>">
                      <p class="text-light-blue">
                           <span class="fa fa-external-link"></span>
                           <?php echo $datum['Title']; ?>
                           <span class="text-muted"> - by <?php echo $datum['Author']; ?> (<?php echo $datum['Date']; ?>)
                           </span>
                      </p>
                </a>
                <?php endforeach; ?>

Но я получаю следующие ошибки

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/a8438725/public_html/index.php on line 56

Notice: Undefined variable: array in /home/a8438725/public_html/index.php on line 777
Warning: Invalid argument supplied for foreach() in /home/a8438725/public_html/index.php on line 777

Вот весь код sql и массива

$announceSql = "SELECT `ID`, `Author`, `Title`, `Date`, `URL`, `Description` FROM `Announcements` ORDER BY ID DESC";
    $announceResult = mysqli_query($db, $announceSql);
    $announcerow_cnt = mysqli_num_rows($announceResult);

    while($row = mysql_fetch_assoc($announceResult)){
        $array[] = $row;
    }

Я также добавил это

if (!$announceResult) {
            printf("Error: %s\n", mysqli_error($db));
            exit();
        }

И нет ошибки mysql, или, по крайней мере, ошибка mysql не появляется

РЕШИТЬ ! Я использовал mysql вместо mysqli_fetch_assoc

php
0
Andrei 24 Апр 2017 в 14:05

2 ответа

Лучший ответ

Вы можете использовать как это

<?php while($announcerow = mysqli_fetch_assoc($announceResult)){ ?>
           $array[] = $announcerow;
<?php }?>



    <?php foreach($array as $datum) {?>
         <a data-toggle="tooltip" title="<?php echo $datum['Description']; ?>" target="_blank" href="<?php echo $datum['URL']; ?>">
              <p class="text-light-blue">
                   <span class="fa fa-external-link"></span>
                   <?php echo $datum['Title']; ?>
                   <span class="text-muted"> - by <?php echo $datum['Author']; ?> (<?php echo $datum['Date']; ?>)
                   </span>
              </p>
        </a>
    <?php } ?>
-1
Agam Banga 24 Апр 2017 в 11:36

Предупреждение: mysql_fetch_assoc (): предоставленный аргумент не является допустимым ресурсом результатов MySQL в /home/a8438725/public_html/index.php в строке 56

Это означает, что строка, которую вы не показали нам, содержит что-то вроде

$announceResult=mysqli_query($db_conn, $sql);

Ошибка или $ announceResult находится в другой области, или $ announceResult был изменен, так как он был заполнен. Первый из них, вероятно, тоже вызвал бы предупреждение. Поэтому наиболее вероятной причиной является то, что у вас есть проблема с областью действия или ошибка где-то в 750+ строках кода, которые вы здесь не показывали.

(подсказка: если вы столкнулись с такой проблемой и не можете исправить ее на месте, рекомендуется попробовать написать настолько маленькую программу, насколько это необходимо, чтобы воспроизвести ошибку и использовать ее для решения проблемы / проиллюстрировать вашу проблему на переполнении стека. ) .

Примечание: неопределенная переменная: массив в /home/a8438725/public_html/index.php в строке 777

Предупреждение: неверный аргумент указан для foreach () в /home/a8438725/public_html/index.php в строке 777

Так как цикл, заполняющий $ array (), управляется mysqli_fetch_assoc (), $ array () никогда не инициализировался и не заполнялся.

0
Community 20 Июн 2020 в 09:12
43586416