Как использовать $ mysqli-> result внутри цикла while? - PullRequest
1 голос
/ 24 марта 2012

Я обрабатываю данные, извлеченные из таблицы, как

<?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')");
        }
?>

Но проблема в том, что sub- $result будет перепутано с родительским, а цикл while будет работать только в первом цикле.

1 Ответ

0 голосов
/ 24 марта 2012

Чем лучше должно быть это

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

Это оптимизировано, и я не думаю, что вам нужно выбрать SELECT ID .. и цикл
(я не вижу, вы используете результатв вашем примере)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...