Rosen,
You've got your insertion order backwards.
Insert in table1
Grab the key with mysql_insert_id - assuming you have an autoincrement field as primary key on that table. Call it something like master_key.
Insert the detail records in table2, with the key you just grabbed from table1 (master_key) as the foreign key for those records.
Note that mysql_insert_id retrieves the last id on a per connection basis, so if 20 people do a near-simultaneous insert each will receive a unique key.
You do NOT need to track the number of child records in table2, the key will do the work. So if you want all the information for a given invoice, fetch its master_key:
Select master_key, invoice_no, another_field from table1 where invoice_no = '$invoice_no'
then after extracting that information,
Select * from table2 where table2.master_key = $master_key
Let SQL do the work, keep it simple, don't get bogged down in housekeeping.
I believe table locking is a bad idea on the web as dropped or slow connections, browsers closed without a logout, and a host of other reasons can leave a record locked and unavailable.
Regards - Miles Thompson
At 07:44 PM 7/10/2004, you wrote:
I have an orders with one main record in table1 ( client, date, e.t.c. ) and detail description in table2 ( all materials with quant, price, e.t.c. ) and I save data in table1 for positions (range of id - autoinc field of records in table2) for detailed data of order . And I don't want someone else to insert data in table2, because will be a problem with orders. Now I insert data first in table2 and then insert main record in table1 with the range of id's of detail order data.
Could be some solution for this ?
Thanks in advance. Rosen
"John W. Holmes" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Rosen wrote: > > I need to be sure, thath nobody else will can write on some tables until I > > don't append obout 4-500 records in these tables. > > But until now I never used table locking in MySQL and I didn't found > > information about this ( like examples ). > > You could try a multi insert syntax such as > > INSERT INTO yourtable (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9); > > which will insert three rows into the table. Couldn't confirm in the > manual, but this INSERT should run completely before anything else does. > > I still have to question _why_ another INSERT in the middle of your > insertion will mess things up. Sounds like the problem is there. > > > Is there a problem with locking if PHP uses same user&pass for all users in > > database ? > > No. The LOCK is on a per connection basis and is not tied to the > username and/or password. > > -- > ---John Holmes... > > Amazon Wishlist: www.amazon.com/o/registry/3BEXC84AB3A5E/ > > php|architect: The Magazine for PHP Professionals www.phparch.com
-- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php