2015-02-11 2 views
-1

Делаю окно комментария, в которомPHP не выборки данных из базы данных MySQL

  • Комментарий коробка будет находиться под пост
  • Каждый комментарий коробка имеет тот же идентификатор, как пост имеет
  • Вот почему я предпочитал делать while петли

Но проблема

  • Как я использую метод fetch_assoc(), некоторые комментарии таблица будет пустой, так я сделал, если еще код для них

Вот мой, если еще код:

$select_comment_table = "SELECT * FROM feed_comment_" . $row['id'] . "ORDER BY id"; 
$result_query_select_comment_table = $dbc->query($select_comment_table); 
if(!$result_query_select_comment_table) { 
    $result_select_comment_table = array("full_name" => "", "comment"=> "No comments yet."); 

} 
else { 
    $result_select_comment_table = $result_query_select_comment_table->fetch_assoc(); 
} 

Если другой код необходимо:

echo '<div id="feed_comment_box_' . $row['id'] . '"' . 'class="feed_comment_box_cl"><div id="add_comment_id" class="add_comment_cl"> 
<form class="comment_form" method="post" action="' .$_SERVER['PHP_SELF'] . '"> 
<input name="comment_full_name" type="text" class="input_comment_full_name"> </input> 
<textarea name="input_comment_text" type="text" class="input_comment_text" ></textarea><input name="comment_submit" type="submit"></input> <br> 
</form> 
</div><br> 
<div id="comment_box_id" class="comment_box_cl"> 
<table tabindex="0" class="comment_box"> 
<tr> <td class="comment_full_name">' . $result_select_comment_table["full_name"] . '</td></tr><br>' . 
'<tr> <td class="comment_full_name">' . $result_select_comment_table["comment"] . '</td></tr><br>' 
. '</table></div></div>'; 
echo '</div>'; 

Проблема: Как вы видите if else кода, PHP должен повторить no comments yet, когда нет ни одного комментария. Но даже после вставки комментария (я попытался вручную вставить в базу данных) он показывает no comments yet, тогда как он должен показывать комментарии

Примечание: Я использую цикл while, поэтому комментарий div подпадает под каждое сообщение.

+0

Пожалуйста, покажите код, включая этот цикл while, который вы говорите, вы используете, иначе проза и код не совпадают. Спасибо – RiggsFolly

+0

Это просто искаженный текст SQL. Это очень легко отлаживается путем простого повторения динамически генерируемого текста SQL; очень ясно, что оператор SQL недействителен, поскольку между табличным именем и ключевым словом 'ORDER' нет пробела, похоже, что' ORDER' является частью идентификатора имени таблицы. Это оставляет ключевое слово 'BY' всем, что это одиноко, и это синтаксическая ошибка. – spencer7593

ответ

3

Похоже, вам не хватает пространства в вашем запросе:

$select_comment_table = "SELECT * FROM feed_comment_" . $row['id'] . "ORDER BY id"; 

должен быть

$select_comment_table = "SELECT * FROM feed_comment_" . $row['id'] . " ORDER BY id"; 

Недопустимый запрос вызывает $ result_query_select_comment_table всегда быть ложными.

+0

Перед ORDER BY – zongweil

+0

@MihirUjjainwal: между именем table_name и ключевым словом 'ORDER'. Повторите свой текст SQL, вы увидите его очень быстро. – spencer7593

+0

Получил это, эта проблема заставила меня смутить больше часа. –

Смежные вопросы