2016-05-16 25 views
-1

私はコメントシステムを実装しようとしていますが、その投稿のコメントが何回も返されます。コメントシステム1つの投稿の複数の投稿を表示します(PHP mysql)

この問題を解決するコードを教えてください。
ありがとうございます。

私が持っているサンプルは以下のようである:

<?php 

include('connect.php'); 

?> 

<form method="post"> 

Subject<br> 
<input type="text" name="subject"><br><br> 
Message<br> 
<textarea name="text"></textarea> 
<br> 
<input type="submit" name="poster" value="Post"> 

</form> 

<?php 

if (isset($_POST['poster'])) { 
    $subject=$_POST['subject']; 
    $message=$_POST['text']; 

    $post=mysql_query("insert into comment (titles, message) values ('$subject', '$message')"); 
    if ($post) { 
     echo "Data got"; 
    }else{ 
     echo "Failed"; 
     echo mysql_error(); 
    } 
} 

$select=mysql_query("SELECT comment.id, comment.titles, comment.message, replies.id, replies.idno, replies.subject, replies.textfile from comment left JOIN replies ON comment.id=replies.id ;"); 


while ($row=mysql_fetch_array($select)) { 

    echo "<b>".$row['titles']."</b><br>"; 
    echo $row['message']."<br>"; 
    echo "<a href=\"edit.php?id=$row[id]\">Reply</a><br>"; 
    echo "<font color='green'><ul>".$row['textfile']."</ul></font><br><br>"; 

} 

?> 

しかし、それは返します

Result

ありがとうございました。

+0

[リトルボビー](http://bobby-tables.com/は)[スクリプトがSQLインジェクション攻撃のリスクがある。]と言います(http://stackoverflow.com/questions/60174/how- can-i-prevent-sql-injection-in-php)を実行します。 [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)でも安全ではありません! –

+0

[mysql_ * '関数の使用を中止](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)してください。 [これらの拡張機能](http://php.net/manual/en/migration70.removed-exts-sapis.php)はPHP 7で削除されました。[prepared](http://en.wikipedia.org/ [PDO](http://php.net/manual/en/pdo.prepared-statements.php)および[MySQLi](http://php.net/manual/en/mysqli.quickstart)のwiki/Prepared_statement)ステートメント.prepared-statements.php)、PDOの使用を検討してください。[これは本当に簡単です](http://jayblanchard.net/demystifying_php_pdo.html)。 –

答えて

0

あなたのコードは、この行に間違っていたようです:左の

$select=mysql_query("SELECT comment.id, comment.titles, comment.message, replies.id, replies.idno, replies.subject, replies.textfile from comment left JOIN replies ON comment.id=replies.id ;"); 

参加し、comment.idは、クエリの最後は次のようにする必要があり、たとえばreplies.commentidのような他の回答テーブルのフィールドと比較する必要があります。

ON comment.id=replies.commentid;"); 
+0

それから、配列にエラーが返されます –

+0

2つのテーブル(コメントと返信)にフィールド名を説明できますか? –

+0

コメント=> id、タイトル、メッセージ、返信=> idno、件名、テキストファイル、id(コメントから)コメントテーブルは投稿を取得するテーブルで、返信テーブルはコメント/投稿への返信を取得するテーブルです。 idとidnoはint(20)、titlesとsubject varchar(255)をとり、残りはテキストを取ります。助けてください、ありがとうございます。 –

関連する問題