2012-06-10 26 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 | 
+----------------------------+-----------+ 

私はこれらの行が挿入されるようにしたいですフォーム提出の新しいテーブル。

テーブルnewtableに値を挿入するには、update.phpをどのようにコード化し続けますか?

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

警告に挿入します。

私はあなたのテーブルの列の数が正確にクエリによって返される列の数と一致した場合、あなたがいない2列

SELECTクエリ復帰するので、私のINSERT文で2列を指定したノート列を指定する必要があります。

+0

ありがとうございます。私はあなたがそのようなSQL querysを書くことができるのか分からなかった。しかし、今私はそれがとても分かります。再度、感謝します! – David

+0

あなたは歓迎です – codingbiz

+1

私はすでに回答としてあなたのコメントをマークしたことを知っていますが、もう一つ質問があります...それはSELECTによって作成されたもの以外のINSERTクエリに値を追加することは可能ですか?たとえば、別の$ _POST値をSELECTクエリによって生成された行と共に別の列に挿入したいとします。これは可能ですか? – 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' 
関連する問題