2012-03-24 8 views
1

私はこの問題は、サブ$resultが親1で台無しにされ、whileループは最初のサイクルで動作することである

<?php 
    $result=$mysqli->query("SELECT value1, value2 FROM table1"); 
     while($row=$result->fetch_assoc()) 
     { 
      $value1 = $row['valu1']; 
      $value2 = $row['value2']; 

      $mysqli->query("INSERT IGNORE INTO table2 (value1) VALUES ('$value1')"); 
      $result2 = $mysqli->query("SELECT id FROM table2 WHERE value1='$value1'"); 
      $row2  = $result2->fetch_assoc(); 
      $column1_id = $row2['id']; 
      $result2->close(); 

      $mysqli->query("INSERT IGNORE INTO table3 (value2) VALUES ('$value2')"); 
      $result3 = $mysqli->query("SELECT id FROM table3 WHERE value1='$value2'"); 
      $row3  = $result3->fetch_assoc(); 
      $column2_id = $row3['id']; 
      $result3->close(); 

      $mysqli->query("INSERT INTO table4 (value1,value2) VALUES ('$value1','$value2')"); 
     } 
?> 

富栄としてテーブルから取得したデータを処理しています。

答えて

0

より良いが、この

insert ignore into table2 (value1) select value1 from table1; 
insert ignore into table3 (value2) select value2 from table1; 
insert ignore into table4 (value1, value2) select value1, value2 from table1 

これは、最適化された、と私焦げ茶色はあなたがIDを選択する必要があると思います。..とループ
されるようにする必要があります(私焦げ茶色はあなたを参照してください、あなたに結果を利用しています例)

+0

アドバイスありがとうございますが、これは私の問題を議論するための簡略化されたバージョンです。実際のコードは、table1から出てくる値に対するPHP処理の多くが複雑になります。 – Googlebot

+0

はい、それを理解してください...あなたはデータをマッサージするロジックを実行し、プロセスの最後にファイルに出力し、mysqlのインポートを実行できますか?あなたは明示的にあなたのコーディング環境を記述する必要があります。私は部外者です。とにかく、1つ1つループして挿入することは、これまでにない悪い方法です。 – ajreal

+0

ケースは変わっていません。私は不器用なデータテーブルを持っており、いくつかのテーブルにデータをホストすることによって正規化されたデータベースを作成したいと考えています。このプロセスでは、PHPで書式設定のようなテキストを扱いたいと思っています。 – Googlebot

関連する問題