Php 为什么这个查询会出现未定义的索引错误?
我正在创建一个非常简单的内容管理系统。。。不幸的是,我无法从数据库中检索帖子。我的错误是: 注意:未定义的索引:C:\wamp\www\NightOwlSoftware\index.php中的标题Php 为什么这个查询会出现未定义的索引错误?,php,mysql,Php,Mysql,我正在创建一个非常简单的内容管理系统。。。不幸的是,我无法从数据库中检索帖子。我的错误是: 注意:未定义的索引:C:\wamp\www\NightOwlSoftware\index.php中的标题 这是存储数据的工作脚本,证明我的列都在那里 <?php include 'db_connect.php'; include 'functions.php'; sec_session_start(); $title = $_POST['title']; $body = $_POST['body
这是存储数据的工作脚本,证明我的列都在那里
<?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' ) ;
?>
如果这是您得到的唯一错误(即日期、标记、正文都可以正常工作),那么您可能在数据库创建中输入了错误的内容,因此实际上没有标题
列。或者该列可能有不同的名称,如名称
,主题
或我不知道我在键入什么
。。。(对不起,我很无聊!)您得到的是标题
的未定义索引,因为数组$row
中没有标题
我建议您查看数据库结构中的表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>";
}
}
?>
';
[代码的其余部分在这里]
如果可以的话,我会把它作为一个注释添加进来,因为这不是一个真正的答案。我同意另一种说法,很可能是DB中的列名与代码中的列名不匹配
在任何情况下,当我遇到这种情况时,您都可以使用调试器或print\r
在while循环中,添加print\r语句-
while($row=mysqli\u fetch\u数组($result)){
打印(行);
回显“.$row['title']”;
回显“日期:”.$row['Date']”。标记:“.$row['Tag']”。
”;
echo'。$row['body']。“
”;
}
您的博客
表是否有一列标题
?它有。我有一个脚本,可以将表单数据存储到数据库中(它使用相同的列标题)。您得到的值是什么?字段名称是否以大写字母开头?因此问题是列名是大写的。我没有意识到这是一个问题,因为当我将数据存储在数据库中时,我没有将列标题大写,这解决了让我相信这不是问题的错误!非常感谢大家!我在每个回音上都有一个错误,它们都不工作,但所有的列都在那里。不幸的是,我正在完成这个教程:所以我不知道从哪里开始调试这个。我尝试回显$row,但我认为我的语法不对…从阅读开始。然后,找到一个真正有价值的教程。
<?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>";
}
}
?>
<?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]
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>";
}