I would design this in the following manner:
Create form that has any and all the data you want about them. Write the PHP so that if you supply the ID of the user (will get to that shortly) if queries their record from the database and shows everything that they have saved. They can make any changes they like and submit the form. This updates their record in the database and the next time they view the page, the new information is shown.
When the form is submitted, it should first check to see if they exist already - if so, update the record - if not, insert it. You can do this in PHP, but you could also do it via a nice mysql statement (insert into... on duplicate key update).
When a user creates an account, their login/username is tied to a unique ID in the database. When they verify this (by logging in again) that ID is passed to a session variable so that you can access their data nice and easily from the database at any point.
Lastly, I would suggest that when you are doing this, use prepared statements to get data to and from the database, I would suggest PDO myself, it's nice, it can be cross database compatible and the like. If you are looking at good security, I suggest not storing the password directly, but salting it and keeping a hash that is verified on the fly. It might be a good idea to insert a semi-unique token right off the bat, so that if they forget their password you can send it to them to verify via a link back. Also, storing a username/login in a cookie is okayish, but never store a password in there. In fact, never store password in a session either - once they are verified, just store a signed in flag of some sort and check against that.
Edit:
If you are able to assign the user a unique ID at the start of the process (like say getting an email from the user) you can then give them a unique ID (or heck, at a pinch, use their email address) then you can then you can insert data into the final row from the start. Mysql offers the insert ... on duplicate key update
syntax. That means you can insert the data into the row with each page that is passed, refer back to it at any point and as a bonus because you use a unique key like their email address this will keep them tied to the data, they are able to enter some data, leave your site and come back at a later time and fill the rest in.