2012-06-10 5 views
5

에 근거하여 여러개의 행을 삽입과 같은 MySQL의 쿼리 : 예를 들어 같은MySQL은 내가 가진 SELECT 질의 결과

SELECT cp.plan_name, cp.plan_time FROM courses c 
    INNER JOIN course_to_plan cpl ON cpl.course_id = c.course_id 
    INNER JOIN courseplans cp  ON cp.plan_id = cpl.plan_id 
WHERE cpl.course_id = '$course_id'; 

이 의지 출력 데이터 :

+----------------------------+-----------+ 
| plan_name     | plan_time | 
+----------------------------+-----------+ 
| Plan number one name  |   6 | 
| Plan number two name  |   6 | 
| Plan number three name  |  10 | 
+----------------------------+-----------+ 

나는이 행에 삽입 할 양식 제출에 대한 새 테이블

update.php 코드를 테이블 newtable에 값을 삽입하도록 계속 코딩하는 방법은 무엇입니까?

if (isset($_POST['submit'])) { 

$course_id = $_POST['course_id']; 


$course_result = mysql_query 
    ("SELECT cp.plan_name, cp.plan_time FROM courses c 
     INNER JOIN course_to_plan cpl ON cpl.course_id = c.course_id 
     INNER JOIN courseplans cp  ON cp.plan_id = cpl.plan_id 
    WHERE cpl.course_id = '$course_id'"); 

/* I want the result of the above rows to be inserted in the table 
    newtable which has the columns plan_name, plan_time */ 

저는 PHP와 MySQL에서는 완전히 쓸모가 없지만 배우려고한다는 것을 싫어합니다. 결과를 저장하고 삽입을 반복하는 배열을 만들 필요가 있다고 생각하지만 어떻게해야할지 모르겠다. PHP 코드에 대한

답변

11

한 가지는 쿼리에 의해 반환 된 열 수가 일치해야한다는 것입니다 $course_id을 통해 SQL 주입주의 : 열 수는

"INSERT INTO NewTable(plan_name, plan_time) 
    SELECT cp.plan_name, cp.plan_time 
    FROM courses c 
     INNER JOIN course_to_plan cpl ON cpl.course_id = c.course_id 
     INNER JOIN courseplans cp  ON cp.plan_id = cpl.plan_id 
    WHERE cpl.course_id = '$course_id'" 

경고에 삽입 할. 나는 테이블의 열 수는 정확히 쿼리에 의해 반환 된 열 수를 일치하면 SELECT 쿼리 반환하기 때문에 2 열 내 INSERT 문에

2 열을 지정

주, 당신은하지 않습니다 열을 지정해야합니다.

+0

감사합니다. 나는 그런 SQL querys를 작성할 수 있다는 것을 몰랐습니다. 그러나 지금 내가 그것을 볼 때 그것은 아주 명백합니다. 다시 한번 감사드립니다! – David

+0

당신은 환영합니다 – codingbiz

+1

나는 이미 답변으로 귀하의 의견을 표시 알고 있지만 한가지 더 질문이 ... 선택에 의해 만들어진 것들 외에 INSERT 쿼리에 더 많은 값을 추가 할 수 있습니까? SELECT 쿼리에 의해 생성 된 행과 함께 다른 열에 삽입하고자하는 또 다른 $ _POST 값이 있다고 가정 해 봅시다. 이것이 가능한가? – David

3

확실하지하지만 당신은 insert/select에 MySQL의 쿼리를 변경하는 경우 그것을 작동합니다 : 당신이 알 필요가

INSERT INTO newtable(plan_name, plan_time) 
     SELECT cp.plan_name, cp.plan_time 
     FROM courses c 
     INNER JOIN course_to_plan cpl 
      ON cpl.course_id = c.course_id 
     INNER JOIN courseplans cp  
      ON cp.plan_id = cpl.plan_id 
     WHERE cpl.course_id = '$course_id'