0

このクエリに何時間も取り組んできたので、誰か助けてください。テーブル ptb_registrations から特定の列をコピーし、新しい行として ptb_users に挿入しようとしています。

私の ptb_registrations テーブルは次のようになります。

id  |   username  |  password   | firstname   |  lastname   |   email 

1        dave        password       james          tanner       email@email.com
2        jonx10      gundam00       eric           davies       something@email.com
3        33csgge     henry10        daniel         gilmart      mail@inbox.com

これらの列から、ユーザー名ではなく、ID、名、姓、電子メール、およびパスワードのみを挿入したい。

したがって、私の ptb_user テーブルは次のようになります。

   id   | user_id  |  password   | firstname   |  lastname   |   email 

    1        1        password       james          tanner       email@email.com
    2        2        gundam00       eric           davies       something@email.com
    3        3        henry10        daniel         gilmart      mail@inbox.com

id は自動インクリメント値であり、データが挿入されたときに user_id が auto_incremented id 列と同じ値を持つようにしたい (これが可能であれば、id が 1 の場合 - user_id も 1 になります)

これまでのところ、ptb_registrations から ptb_users に列を挿入するためにさまざまな方法を試しましたが、何も機能していません。

誰かが間違っているところを教えてください、ありがとう。

 // Make a safe query
    $query ="insert into ptb_users(id, first_name)
    select ptb_registrations.id, ptb_registrations.firstname
    from ptb_registrations, temp
    where ptb_users.id=temp.id;
    ";

    mysql_query($query)or die('Could not update members: ' . mysql_error());
4

1 に答える 1

0

新しいユーザー ID が以前のユーザー ID と一致することを保証する方法はありませんAUTO_INCREMENT... シーケンスに切れ目があるとどうなりますか? 最善の策は、レコードを挿入した後に新しいテーブルの ID を再割り当てすることです。

クエリは次のようになります。

INSERT INTO ptb_user (user_id, password, firstname, lastname, email)
SELECT id, password, firstname, lastname, email
FROM ptb_registrations
ORDER BY id

PSパスワードをプレーンテキストで保存していないことを願っています。

于 2013-03-14T19:05:09.497 に答える