2016-04-04 13 views
1

Syssla_id'in users(syssla_id2) numaralı yabancı anahtar olduğu 2 tablo, kullanıcı ve syssla var.Verileri bir tablonun içine nasıl ekleyebilirim ve bir yabancı anahtar olarak başka bir tabloya yerleştirmek için birincil anahtarı nasıl alabilirim?

create table syssla(         
    syssla_id int auto_increment, 
    Uppgift varchar (255), 
    Information text, 
    Tid varchar(100), 
    primary key(syssla_id) 
)engine=innodb; 

create table users(         
    user_id int , 
    username varchar (50), 
    user_password varchar (50), 
    Namn varchar(100), 
    syssla_id2 int, 
    primary key(user_id), 
    foreign key(syssla_id2) references syssla(syssla_id) 
)engine=innodb; 

Ben php bir form ile bir ekleme yapmak istiyorum. Ancak, yabancı anahtarın diğer bir kullanıcıyla aynı anda başka bir kullanıcıya eklenmesini sağlamak için nasıl yapabilirim?

// you start a mysql transaction 
$mysqli->begin_transaction(); 
// execute your first query 
$mysqli->query(""); // Insert query here 
$new_id = $mysqli->insert_id; 

$mysqli->query(""); // second query here using the $new_id 

$mysqli->commit(); 

$mysqli->close(); 

Eğer herhangi bir nedenle:

+2

Olası çoğaltılabilir [PHP'de MySQL tablonun en son eklenen kimliğini nasıl alabilirim?] (http://stackoverflow.com/questions/1685860/nasıl-do-i-get-son-eklenen-id-of-a-mysql-tablodaki-in-php) – cmnardi

cevap

0

Sen aşağıdakileri yapın users

0

içine daha sonra yeni bir kayıt eklemek için LAST_INSERT_ID() işlevini kullanarak id olsun sonra syssla içine ilk ekler saklı bir yordam yazmak ve gerektiği ikinci sorgu, ilk sorguyu iptal edemez ve hiç bir şey olmamış gibi olur, ayrıca bir işlem başlatıldığında, son sorgulamada başka sorguların üzerine yazılmasını engeller. Böylece başka bir kullanıcı tarafından çalıştırılan başka bir sorgu tarafından yanlış kimliği asla alamayacaksınız.

ps. Hazırladığınız ifadeleri kullanmaya çalışın, sql enjeksiyonuna karşı sizi daha iyi koruyarak el ile değişkenlere göre daha iyi korur