2011-01-26 5 views
1

나는 실제 문제에 대한 현상 분석을 시도합니다. 나는 기사와 코멘트를위한 두 개의 테이블을 가지고있다. 각각에는 고유 한 기본 키가 있습니다. 그러나 모든 기사는 그것에 대해 여러 의견을 가질 수 있습니다. 그래서 여기 두 개의 관련 테이블에 값을 입력하십시오.

는 SQL 데이터베이스에 기사를 삽입 (MySQL은 PHP에서) 코드 :

$sql="INSERT INTO articles (content) 
     VALUES 
     ('$content')";//$content variable has text related to the article 

기사 테이블이 컬럼은 articleID 및 콘텐츠가 있습니다. 삽입 된 각 기사는 자동으로 고유 한 articleId를 얻습니다. articleId는 article 테이블의 기본 키입니다. 효과적인 방법으로 그 articleId의 번호를 얻는 쉬운 방법이 있습니까? 효과적인 방법으로 나는 더 많은 SQL 코드를 피하려고 노력한다. 다음 단계에서는 articleId를 사용하여이 기사에 각 주석을 연결해야하기 때문입니다.

답변

3

이 :

$query = "INSERT INTO articles ..." 
mysql_query($query); 
$new_id = mysql_insert_id(); 

foreach($comments as $comment) { 
    $query = "INSERT INTO comments (articleID, comment) VALUES ($new_id, $comment);" 
    mysql_query($query); 
} 
0

트리거를 구현해보십시오. 기사가 삽입 될 때 댓글에 삽입 할 수 있습니다.

+0

이해가 안 되니? som 코드 예제를 줄 수 있습니까? – einstein

0

트리거가 진행되는 것처럼 보입니다. 그러나 로직과 트리거 자체가 사용되지 않으므로 트리거가 너무 행복하지 않게됩니다.

당신이 작성한 방아쇠를 항상 어딘지에 기록하십시오.

+0

방아쇠가 무엇인지 모릅니다. 코드 예제? – einstein

0

두 번째 쿼리에서 마지막 삽입 ID를 참조 할 수 있습니다. MySQL 함수 또는 PHP 함수를 사용하여이를 수행 할 수 있습니다.

MySQL은 :

INSERT INTO comments (comment, articleId) 
     VALUES 
     ('comment', LAST_INSERT_ID()) 

PHP :

$sql="INSERT INTO comments (comment, articleId) " 
     . "VALUES " 
     . "('$comment', mysql_insert_id())"; 

편집 : 당신은은 articleID를 만든 후 하나 이상의 주석을 삽입하는 경우, 당신은 빨리 당신이 그것을 삽입으로은 articleID를 저장할 것 (PHP에서) 그런 다음 나중에 해당 변수를 사용하십시오.

$sql="INSERT INTO articles (content) 
     VALUES 
     ('$content')" 
$articleid = mysql_insert_id(); 

$sql="INSERT INTO comments (comment, articleId) " 
     . "VALUES " 
     . "('$comment', $articleid)"; 
$sql="INSERT INTO comments (comment, articleId) " 
     . "VALUES " 
     . "('$comment', $articleid)"; 
+0

삽입 할 댓글이 두 개 이상있는 경우 오류가 발생하며 last_insert_id()는 기사 ID가 아닌 이전 댓글 ID를 반환합니다. –

+0

Heh, 충분히 사실 - 나는 당신이 논평 한 것처럼 보인다는 것을 편집하고 있었다. – TehShrike

관련 문제