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