2011-11-28 2 views
3

3 테이블 태그 시스템을 만들려고합니다. 내가 MySQL은 3 테이블이 : 내 제출 PHP에서PHP와 SQL의 3 테이블 시스템에 태그를 삽입하는 방법

#Articles#
id
article
content

#Tags#
tag_id
tag (unique)

#tagmap#
id
tag-id
articleid

는 내가 가진 :이 작동하지 않습니다

$tags= explode(',', strtolower($_POST['insert_tags'])); 

for ($x = 0; $x < count($tags); $x++) { 
    //Add new tag if not exist 
    $queryt = "INSERT INTO `tags` (`tag_id`, `tag`) VALUES ('', '$tags[x]')"; 
    $maket = mysql_query($queryt); 

    //Add the relational Link, now this is not working, beacasue this is only draft 
    $querytm = "INSERT INTO `tagmap` (`id`, `tagid`, `articleid`) VALUES ('', (SELECT `tag_id` FROM `tags` WHERE tag_id = "$tags[x]"), '$articleid')"; 
    $maketm = mysql_query($querytm); 
    } 

나는 새로운 태그를 제출할 때 조. 내 태그 테이블에 새 태그를 만들지 않습니다.

추신. 나쁜 영어로 죄송합니다.

+0

문제점 : 오류 메시지가 나타 납니까? 코드에 의해 생성 된 쿼리를 반향 출력 해 보았습니까? btw를 사용하면 SQL 인젝션에 취약하지 않도록해야합니다 (SO 검색 또는 즐겨 찾는 검색 엔진을 사용하여 자세한 정보 확인). – liquorvicar

+0

새 게시물을 추가 할 때 오류가 발생했습니다. 게시물이 정상적으로 추가되었지만 태그가 추가되지 않았습니다. 나는 SQL 주입에 대해 알고 있지만 이것은 초안 버전입니다. –

답변

3

'x'변수에 $ 기호가 없습니다. 두 줄 모두 이렇게 해보십시오.

'" . $tags[$x] . "' 

또한이 방법은 SQL 쿼리를 복잡하게 만들 필요가 없습니다.

$tags= explode(',', strtolower($_POST['insert_tags'])); 
for ($x = 0; $x < count($tags); $x++) { 
    //Add new tag if not exist 
    $queryt = "INSERT INTO `tags` (`tag_id`, `tag`) VALUES ('', '" . $tags[$x] . "')"; 
    $maket = mysql_query($queryt); 

    //Get tag id 
    $tag_id = mysql_insert_id(); 

    //Add the relational Link, now this is not working, beacasue this is only draft 
    $querytm = "INSERT INTO `tagmap` (`id`, `tagid`, `articleid`) VALUES ('', '$tag_id', '$articleid')"; 
    $maketm = mysql_query($querytm); 
} 
+0

응답 해 주셔서 감사합니다. –

+0

이제 잘 했어. 고마워. x에 변수를 할당해야한다는 것을 알지 못했습니다. –

관련 문제