var_dump显示数据,但回显显示未定义索引-茫然

时间:2019-05-14 03:44:00

标签: php mysql

我正在进行两个查询,一个查询工作正常……回显所有正确的列值。第二个显示所有数据var_dump,但始终显示未定义索引。我不明白我做错了什么。

我尝试通过开发人员的建议创建一个数组来定义索引,但这给了我零结果

$navpage = array();
$navpage['splash_id']='';

等,但是显然会导致空白处...我不知道为什么这是我被导致的解决方案。

  

错误代码说:注意:未定义的索引:splash_id在...

我知道有很多这样的问题,其中大多数都在谈论他们正在处理的电子邮件表单,而我只是想从数据库中输出数据。

这是我的查询文件arts.php

<?php
require 'scripts/start.php';
$pages = $db->query("SELECT article_id, department, title, article_link, shortdesc, img_meta, live FROM content WHERE department='Arts' AND live='Yes'
")->fetchAll(PDO::FETCH_ASSOC);

$navpage = $db->query("SELECT splash_id, page, live, big_message, img1, text1, link1, expdate FROM splash WHERE page='arts' AND live='Yes'
")->fetchAll(PDO::FETCH_ASSOC);

  require VIEW_ROOT . '/artpages.php';
?>

我在其中回显列-text1之类的页面

<?php require VIEW_ROOT . '/department/arts_header.php';

?>
<div id="major">
<div id="so" class="mainimage">
<div class="mainimage"><img src="cms_img/header/<?php echo $navpage['img1']?>" class="splashimage"></div>
</div>
<div id="contentbox">
<div id="middle"><div id="articleheadline" class="titlefont"><?php echo $navpage['text1']?></div>
  <?php if (empty($pages)): ?>
  <p class="textfont">Sorry, there are no articles on this page.</p>
<?php else: ?>
  <?php foreach($pages as $page): ?>
    <div class="article_container">
      <a href="<?php echo BASE_URL; ?>/artsarticle.php?page=<?php echo $page['article_link']?>"><div class="article_promo"><img src="cms_img/<?php echo escape($page['img_meta']) ?>"class="promofit"></div></a>
      <div class="article_title"><span class="article_title_font"><?php echo $page['title']?></span></div>
      <div class="article_desc"><span class="article_desc_font"><?php echo $page['shortdesc']?></span></div>
    </div><?php endforeach; ?>

  <?php endif; ?>
</div></div></div></div>
<?php
require VIEW_ROOT . '/templates/footer.php';
?>

我希望$navpage的回波像$page那样填充。

3 个答案:

答案 0 :(得分:0)

因为您使用->fetchAll(PDO::FETCH_ASSOC)。它的返回数组navpage

所以您必须对$navpage[0]['img1']$navpage[0]['text1']进行编码

在使用!empty($navpage)之前请注意检查$navpage[0]

答案 1 :(得分:0)

全部获取都会得到一个多数组结果,因此您需要像在$ pages中那样使用foreach循环,或者使用下面的代码仅获取一个数组。

$dbh = new PDO("SELECT article_id, department, title, article_link, shortdesc, img_meta, live FROM content WHERE department='Arts' AND live='Yes'"); 
$stmt = $dbh->prepare("SELECT name FROM mytable WHERE id=4 LIMIT 1"); 
$stmt->execute(); 
$navpage= $stmt->fetch(); 

答案 2 :(得分:0)

瑞安·恩吉姆(Ryan Nghiem)精明地指出了答案。谢谢!

先列出$,然后再列出[0] ['']

“ class =” splashimage“>更改为” class =“ splashimage”>