2012-03-05 2 views
1

나는 초보자입니다. 도와 줘, 제발. 스크립트에 작은 문제가 있습니다. 이 스크립트 (관리 폴더)에 있습니다. 기사 포함 (이 페이지는 스레드를 추가하기 위해 노력하고 있습니다) 내 문제는 페이지에서 (read_mor.php) 나는 쿼리를 만듭니다. 뉴스를 가지고 데이터베이스를 가지고 이것은 쿼리입니다.어떻게하면 문서로 코멘트를 삽입 할 수 있습니다 PHP를 사용하여 ID를

<?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 신

* 입니다하지만 난 테이블에 코멘트 (댓글) 를 삽입 할 때 사후 테이블 쇼의 모든 의견 .. !! * 나는 ID 기사

삽입 주석이 페이지를하여 기사에 코멘트를 삽입해야

<?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> 

게시물 표 ------>

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 injection] (http://bobby-tables.com/)에 취약합니다. –

+0

또한 귀하의 문제가 무엇인지 이해하지 못합니다. 삽입이 실패합니까? 왜'$ result' 대신에'$ query' (항상'true'라고 평가 될 것입니다)의 진리 값을 확인하고 있습니까? –

+0

$ 결과 또는 $ 쿼리는 내 문제가 아님 .. 문제는 내가 주석 처리를 성공적으로 수행했지만 주석 처리와 관련이 없다는 것입니다. – ahmedhassan

답변

1

나는 post_id가 아닌 auto_increment 필드에 대해 LAST_INSERT_ID()가 올바르게 작동한다고 생각합니다. 또한 기본 키 이외에는 LAST_INSERT_ID()를 사용하면 안됩니다.

+0

다른 형태의 질문 올바른 게시물 아래에 주석 표시를 어떻게 표시 할 수 있습니까? 나는 postid를 가지고 있지만 데이터베이스의 다른 테이블에있는 경우 블로그 게시물과 동일한 ID로 만드는 방법이 없습니다. 다시 한 번 감사드립니다! – ahmedhassan

+0

이 작업을 수행하는 방법은 여러 가지가 있으며 하나의 쿼리에서이 작업을 수행 할 수도 있습니다.하지만 대부분의 응용 프로그램에서는 이것이 실용적이지 않습니다. 시도해 봐야 할 일은 먼저 postid를 가져 와서 (PHP에서) 변수에 할당하고이를 기반으로하는 주석을 작성하는 것입니다 (WHERE'postid' = {$ post_id}와 같은 것). – Ynhockey

관련 문제