2012-06-10 26 views
5

göre mutiple satır eklemek böyle bir MySQL sorgusu: gibi örneğinMySQL ben SELECT sorgusu sonucu

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'; 

çıktısı verir veriler:

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

I bu satırların içinde yerleştirilmiş verilsin bir form gönderiminde yeni bir tablo.

update.php kodumu, newtable tablosundaki değerleri eklemek için koduma devam edebilirim?

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 */ 

ben PHP ve MySQL tamamen işe yaramaz olduğumu itiraf etmek istemem ama öğrenmeye çalışıyorum. Sanırım sonucu saklamak için bir çeşit dizi oluşturmalıyım ve sonra ekler üzerinden geçmeliyim ama nasıl olduğunu bilmiyorum. php kodu hakkında

cevap

11

Bir şey sizin sorgusunun döndürdüğü sütun sayısı eşleşmelidir olmasıdır $course_id aracılığıyla sql enjeksiyon için dikkat: sütun sayısı size

"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'" 

Uyarı eklemek istiyorum. Ben senin tablodaki sütun sayısı tam olarak sorgu tarafından döndürülen sütun sayısı eşleşirse SEÇ sorgu dönüş nedeniyle 2 sütun benim INSERT açıklamada

2 sütun belirtilen

Not, o zaman yok sütunları belirtmeniz gerekir.

+0

Teşekkür ederiz. Böyle SQL sorguları yazabileceğini bilmiyordum. Ama şimdi onu gördüğümde çok açık. Tekrar teşekkürler! – David

+0

Hoş Geldiniz – codingbiz

+1

Biliyorum daha önce yorumunuzu yanıt olarak işaretledim ama bir sorum daha var ... SELECT tarafından oluşturulanlar dışında INSERT sorgusuna daha fazla değer eklemek mümkün müdür? SELECT sorgusu tarafından oluşturulan satırlarla birlikte başka bir sütuna eklenmesini istediğim başka bir $ _POST değerine sahip olduğumu varsayalım. Mümkün mü? – David

3

Emin değilim ancak bir insert/select için MySQL sorgusunu değiştirmek eğer çalışması gerekir: Eğer bilmek zorunda

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'