2013-11-26 2 views
2

Я работаю над созданием очень простой системы управления контентом ... К сожалению, я не получаю сообщения из своей базы данных. Моя ошибка:Почему я получаю неопределенную ошибку индекса с этим запросом?

Примечание: Undefined индекс: название в 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') ; 
?> 
+3

Есть ли у вашей 'blog' таблица столбца' title'? – kero

+0

Он делает. У меня есть сценарий для хранения данных формы в базе данных, которая работает (она использует те же заголовки столбцов). – CodeManiak

+0

закомментируйте эхо и используйте print_r ($ row) в цикле while. Каковы ценности, которые вы получаете? – Sico

ответ

1

Если это единственная ошибка, вы получаете (то есть. дата, теги, тело все отлично работает), то вы, вероятно, неправильно набран то в создании базы данных, и дон» фактический В результате получится столбец title. Или, может быть столбец имеет другое название, как name, subject или im_so_bored_i_dont_know_what_im_typing ... (извините, мне скучно!)

+0

Я получаю сообщение об ошибке для каждого эха, ни одна из них не работает, но все столбцы есть. К сожалению, я работаю над этим учебным пособием: http://www.w3schools.com/php/php_mysql_select.asp, поэтому я точно не знаю, с чего начать отлаживать это. Я попытался повторить $ row, но я не думаю, что мой синтаксис был прав ... – CodeManiak

+0

Начните читать [this] (http://w3fools.com/). Затем найдите учебник, который действительно стоит того. –

0

Вы получаете неопределенный индекс для 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>"; 
    } 
} 
?> 

Если все это не работает & ничего визуализирует, то ваш DB запрос является ошибочным, поэтому данные не возвращаются. Простой способ проверить это перед циклом 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] 
0

Если бы я мог, я бы добавил это как комментарий, потому что это на самом деле не ответ. Я согласен с другим, что скорее всего - имя столбца в БД не соответствует тому, что у вас есть в коде.

В любом случае, когда я в таких ситуациях, вы можете использовать отладчик или использовать print_r.

В ваше время цикла, добавить 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>"; 
} 
Смежные вопросы