2017-04-24 136 views
0

Eh ..我很抱歉提出这样一个基本问题,但我无法在google或stackoverflow上找到一个好的答案...这就是我想要做的。将数据从MySQL存储到数组中并稍后访问

我保存在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和一个描述,这是我现在展示他们的方式。如何从数组中显示它们?

对不起这个没有问题的问题......找不到答案。

我甚至试过mysql_data_seek();所以我可以用获取更多次,但我得到这个错误:

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和一个rray

$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错误appeard

解决了!我是用的,而不是mysqli_fetch_assoc MySQL的

+0

您可以在'$ array'上创建一个循环,如http://php.net/manual/en/control-structures.foreach.php –

+0

中给出的那样呃,但是如何定义一个键以及如何添加例如: “key”=>“$ row ['Title']”,“$ row ['URL']”,“$ row ['Description']”等 这会在那时起作用吗? – Andrei

+0

我已经添加了答案。让我知道它是否适合你 –

回答

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

mysql_fetch_assoc():提供的参数不是一个有效的MySQL结果资源在 – Andrei

+0

@Andrei正在显示从结果' '。在此代码中,您需要将每行添加到您的数组中。所以后来,你可以随时访问它 –

+0

嗯,我用它来加载它们到数组中之前使用你的代码来显示它们:? while($ row = mysql_fetch_assoc($ announceResult)){ \t \t \t $ annarray [] = $ row; \t \t} 但我得到这个错误从上面 – Andrei

0

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

这意味着你还没有告诉我们含有类似

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

线路故障或$ announceResult处于不同的范围,或$ announceResult自填充后已更改。其中的第一个可能也会引发警告。所以最可能的原因是你已经在750多行代码中的某处发现了一个范围问题或bug,这些代码你没有在这里显示。 (提示:如果遇到像这样的问题,无法在原位修复,建议尽量使用小型程序来重现错误并使用它来解决问题/说明您的问题堆栈溢出问题)。

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

由于环填充$阵列()由mysqli_fetch_assoc驱动(),$阵列()从未被初始化并填充。

+0

我已经更新了我的帖子,SQL是正确的,而上述这样的范围不应该是一个问题?我还初始化数组中环路'$ annarray =阵列()之前;'所以唯一的错误是现在mysql_fetch我不知道为什么会发生,因为它完美的作品时,我这样做是嵌入在HTML – Andrei

相关问题