将MySQL中的数据存储到一个数组中,稍后再访问它

时间:2017-04-24 11:05:06

标签: php

呃..我很抱歉提出这样一个基本问题,但我无法在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;


}

但我如何稍后为用户显示公告? 此外,我的公告有ID,标题,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和array

的完整代码
$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

2 个答案:

答案 0 :(得分:0)

  

警告:mysql_fetch_assoc():提供的参数不是第56行/home/a8438725/public_html/index.php中有效的MySQL结果资源

这意味着您没有向我们展示包含

之类的内容
$announceResult=mysqli_query($db_conn, $sql);

失败或$ announceResult位于不同的范围内,或者$ announceResult自填充后已更改。其中第一个可能也会引发警告。因此,最可能的原因是,您在此处未向我们展示的750多行代码中存在范围问题或错误。

(提示:如果遇到这样的问题并且无法在原地修复它,建议尝试编写一个小型程序,以便重现故障并使用它来解决问题/说明你的问题在堆栈溢出)。

  

注意:未定义的变量:第777行/home/a8438725/public_html/index.php中的数组

     

警告:在第777行的/home/a8438725/public_html/index.php中为foreach()提供的参数无效

由于循环填充$ array()是由mysqli_fetch_assoc()驱动的,所以$ array()从未被初始化和填充。

答案 1 :(得分:-1)

你可以这样使用

<?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 } ?>