0

次のコードを書いて、mysql db にデータを保存しました。問題は、挿入クエリまたは更新クエリが 1 回だけ実行され、最初のサイクルだけが実行されることです。stackoverflow と google で解決策を見つけようとしましたが、成功しませんでした。誰でも私を助けることができました。

foreach($data as $val){

            $result = $con->query('SELECT id FROM mytable where name = "'.$val'"');
            $row = $result->fetch_row();

            if(isset($row[0]) ) $id =  $row[0];

            if(!isset($id)) {
                 $queryInsert = "INSERT INTO mytable bla bla );";
                 $result = $con->query($queryInsert);
                 $id = $con->insert_id;
            }
            else {
                 $queryUpdate = "UPDATE mytable bla bla";
                 $result = $con->query($queryUpdate);
            }

            //other code and queries ...

        }
4

1 に答える 1

1

確認num_rowsしてから挿入または更新できます

foreach($data as $val){
    $result = $con->query('SELECT id FROM mytable where name = "'.$val.'"');
    $num = $result->num_rows;

    if($num){ //it exists -> update

        $queryUpdate = "UPDATE mytable SET bla bla";
        $resultUpdate = $con->query($queryUpdate);
        $row = $result->fetch_assoc();
        $id = $row['id'];

    } else { //it doesnt exist insert

        $queryInsert = "INSERT INTO mytable VALUES ( bla bla );";
        $resultInsert = $con->query($queryInsert);
        $id = $resultInsert->insert_id;
    }
}
于 2013-07-11T13:13:14.650 に答える