2012-03-05 16 views
1

私は初心者です。私は助けが必要です。 私はスクリプトに小さな問題があります このスクリプト(管理フォルダ)には記事があります(このページはスレッドを追加するために働いています) 私のページの問題(read_mor.php) 私は質問をしますニュースを持ってくるデータベースと これはクエリです。私はどのように記事のコメントを挿入することができますか?

<?php 
include ('config/connect_to_mysql.php'); 
$id = $_GET["id"]; 
$fetch = mysql_query("SELECT * FROM posts WHERE id= '$id' ") or die(mysql_error()); 
while($myrow = mysql_fetch_assoc($fetch)) { 
?> 
<?php echo $myrow['title']; ?> 
<?php echo $myrow['created_on']; ?> 
<?php echo $myrow['categories']; ?> 
<?php echo $myrow['description']; ?> 
<?php echo $myrow['categories']; ?> 
<?php } ?> 

すべてがVの神

* ですが、私は、テーブル内のコメント(コメント) を挿入したときに任意のポストを持つテーブルショーですべてのコメント..!私は、インサートコメント

<?php 
include ('config/connect_to_mysql.php'); 

$query="INSERT INTO comments (com_id,name,url,email,comment,postid) 
     VALUES 
     ('', '$_POST[name]' , '$_POST[url]', '$_POST[email]', '$_POST[comment]', LAST_INSERT_ID(postid))" or die(mysql_error()); 

if ($query) 

$result = mysql_query($query); 

{ 
echo "<strong>Thanks!</strong><p>Your message was successfully sent.</p>"; 
} 
?> 

、データベース内の表 ---->

comments 



structure for table `comments` 
(
    `com_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 
    `url` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 
    `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', 
    `comment` text COLLATE utf8mb4_unicode_ci NOT NULL, 
    `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `yes` int(11) NOT NULL, 
    `postid` int(11) NOT NULL, 
    PRIMARY KEY (`com_id`) 
) ENGINE=MyISAM DEFAULT 
</i> 

のために、このページのidの記事で

を記事とのコメントを挿入する必要があります*

投稿の表 ------>

CREATE TABLE IF NOT EXISTS `posts` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(200) NOT NULL, 
    `description` longtext NOT NULL, 
    `categories` varchar(200) NOT NULL, 
    `post_meta` varchar(200) NOT NULL, 
    `post_robots` varchar(200) NOT NULL, 
    `meta_title` varchar(200) NOT NULL, 
    `meta_description` text NOT NULL, 
    `created_by` varchar(100) NOT NULL, 
    `created_on` datetime NOT NULL, 
    `imageref` varchar(300) NOT NULL, 
    `post_status` varchar(70) NOT NULL DEFAULT 'published', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=102 ; 
+2

参考までに、あなたのコードは[SQLインジェクション](http://bobby-tables.com/)に脆弱です。 –

+0

また、私はあなたの問題が何かを理解していません。挿入に失敗しましたか? '$ result'の代わりに' $ query'(常に 'true'と評価される)の真理値をチェックするのはなぜですか? –

+0

$ resultまたは$ queryは私の問題ではありません。問題は、コメントプロセスを追加したが、コメントスレッドに関連していないことです。 – ahmedhassan

答えて

1

私はLAST_INSERT_ID()がauto_incrementフィールドに対して正しく動作すると信じています。これはpostidではありません。また、主キー以外のものにLAST_INSERT_ID()を使用しないでください。

+0

別の形式の質問正しい投稿の下にコメントを表示するにはどうすればよいですか?私はpostidを持っていますが、データベースの異なるテーブルにある場合、ブログ投稿と同じIDにする方法が失われています。再度、感謝します! – ahmedhassan

+0

これを行うには複数の方法がありますが、1つのクエリでそれを行うこともできますが、ほとんどのアプリケーションでこれは実用的ではないことがわかりました。しようとするべきことは、まずpostidを取得し、それを変数に代入し(PHPで)、それに基づいたコメントを作成します(WHERE 'postid' = {$ post_id}など)。 – Ynhockey

関連する問題