繁体   English   中英

为什么在此查询中出现未定义的索引错误?

[英]Why am I getting an undefined index error with this query?

我正在创建一个非常简单的内容管理系统...不幸的是,我无法从数据库中检索帖子。 我的错误是:

注意:未定义的索引:C:\\ wamp \\ www \\ NightOwlSoftware \\ index.php中的标题

<?php
include 'scripts/db_connect.php';
include 'scripts/functions.php';

sec_session_start();
$sql = "SELECT * FROM blog";
$result = mysqli_query($mysqli, $sql);

while($row = mysqli_fetch_array($result)) {
    echo'<div class="blog"><h3 class="blog">' . $row['title'] . "</h3>";
    echo'<span class="blog"> Date: ' . $row['date'] . " Tag: " . $row['tag'] . "</span><hr>";
    echo'<p class="blog">' . $row['body'] . "</p>";
}
?>

这是存储数据的工作脚本,证明我的专栏都在那里...

<?php
include 'db_connect.php';
include 'functions.php';
sec_session_start();
$title = $_POST['title'];
$body = $_POST['body'];
$tag = $_POST['tag'];
$date = date_create()->format('Y-m-d H:i:s');
$sql = "INSERT INTO blog (date, title, body, tag)
VALUES ('$date', '$title', '$body', '$tag')";
mysqli_query($mysqli, $sql);
mysqli_close($mysqli);
header( 'Location: ../index.php' ) ;
?>

如果这是您遇到的唯一错误(例如,日期,标签,正文都可以正常工作),那么您可能在数据库创建中输入了错误的内容,因此实际上没有title列。 或该列具有不同的名称,例如namesubjectim_so_bored_i_dont_know_what_im_typing ...(对不起,我很无聊!)

您正在获得title的未定义索引,因为数组$row没有title

我建议你看一下你的数据库结构表blog ,但我也建议做你的一些基本数据的检查while ,以确保您只渲染存在的内容。 看一下:

<?php
include 'scripts/db_connect.php';
include 'scripts/functions.php';

sec_session_start();
$sql = "SELECT * FROM blog";
$result = mysqli_query($mysqli, $sql);

while($row = mysqli_fetch_array($result)) {
    if (array_key_exists('title', $row) && !empty($row['title'])) {
      echo'<div class="blog"><h3 class="blog">' . $row['title'] . "</h3>";
    }
    if (array_key_exists('date', $row) && !empty($row['date'])) {
      echo '<span class="blog"> Date: ' . $row['date'];
    }
    if (array_key_exists('tag', $row) && !empty($row['tag'])) {
      echo " Tag: " . $row['tag'] . "</span><hr>";
    }
    if (array_key_exists('body', $row) && !empty($row['body'])) {
      echo'<p class="blog">' . $row['body'] . "</p>";
    }
}
?>

如果所有这些都运行且没有任何结果,则说明您的数据库查询存在缺陷,因此不会返回数据。 while循环之前进行检查的一种简单方法是将数组转储到屏幕上以查看其中的内容:

<?php
include 'scripts/db_connect.php';
include 'scripts/functions.php';

sec_session_start();
$sql = "SELECT * FROM blog";
$result = mysqli_query($mysqli, $sql);

while($row = mysqli_fetch_array($result)) {
  echo '<pre>';
  print_r($row);
  echo '</pre>';

 [ rest of your code goes here]

如果可以的话,我将其添加为注释,因为这并不是真正的答案。 我很同意其他人的看法-DB中的列名与代码中的名称不匹配。

无论如何,当我遇到这种情况时,可以使用调试器或使用print_r。

在while循环中,添加print_r语句-

while($row = mysqli_fetch_array($result)) {
print_r($row);
echo'<div class="blog"><h3 class="blog">' . $row['title'] . "</h3>";
echo'<span class="blog"> Date: ' . $row['date'] . " Tag: " . $row['tag'] . "</span><hr>";
echo'<p class="blog">' . $row['body'] . "</p>";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM