2016-04-13 27 views
0

Önceki iki sorgunun insert_id'ini almak mümkün mü? Sonuncuyu alabiliyorum ama önceki ikisini de beğenebiliyorum. Aşağıdaki örnekte, işlendikten sonra, adres tablosuna yeni bir rol eklemek, rol tablosuna yeni satır eklemek ve daha sonra, önceki iki sorguda eklenen sorgulardan gelen kimliği kullanarak müşterilere bir satır eklemek istiyorum. Bu mümkün mü?mysqli - işlemle ilgili önceki iki sorgunun insert_id'ini almak mümkün mü?

if(isset($_POST["submit"])) : 
    $username = $_POST["username"]; 
    $password = $_POST["password"]; 
    $role = $_POST["role"]; 
    $permission1 = intval($_POST["permission1"]); 
    $permission2 = intval($_POST["permission2"]); 
    $city = $_POST["city"]; 
    $state = $_POST["state"]; 
    mysqli_autocommit($connection,FALSE); 
    mysqli_query($connection,"INSERT INTO Address(city, state) VALUES('{$city}', '{$state}')"); 
    mysqli_query($connection,"INSERT INTO Roles(roleName, permission1, permission2) VALUES('{$role}', '{$permission1}', '{$permission2}')"); 
    mysqli_query($connection,"INSERT INTO Customers(username, password, roleId, addressId) VALUES ('{$username}', '{$password}'," . mysqli_insert_id($connection) . " , " . mysqli_insert_id($connection) . ")"); 
    if(mysqli_error($connection)): 
    echo mysqli_error($connection); 
    endif; 
    mysqli_commit($connection); 
endif; 

iki kez Roles ekten kimliği çeker son sorguda mysqli_insert_id($connection). İlk iki sorgundan iki Id valisini ele geçirmenin bir yolu var mı?

+0

Hayır, son eklenen kimliği teneke üzerinde belirtildiği gibi alır. Her sorgudan sonra, bir değişkenin kimliğini ve saklanmasını istediğinizde arayın. –

+2

Sadece bir değişken olarak kaydedin. '/ * ilk sorguyu yürüt */$ id1 = mysqli_insert_id ($ connection);/* ikinci sorguyu yürüt */$ id2 = mysqli_insert_id ($ bağlantı); ' – Mike

+0

Teşekkürler! Bu nesneler için yeni, bir sorgu dışında bırakılırsa insert_id işlevinin başarısız olup olmadığını bilmiyordu. –

cevap

0
if(isset($_POST["submit"])) : 
$username = $_POST["username"]; 
$password = $_POST["password"]; 
$role = $_POST["role"]; 
$permission1 = intval($_POST["permission1"]); 
$permission2 = intval($_POST["permission2"]); 
$city = $_POST["city"]; 
$state = $_POST["state"]; 
mysqli_autocommit($connection,FALSE); 

mysqli_query($connection,"INSERT INTO Address(city, state) VALUES('{$city}', '{$state}')"); 
//this will give you first id// 
$first_inserted_id = mysqli_insert_id($connection); 

mysqli_query($connection,"INSERT INTO Roles(roleName, permission1, permission2) VALUES('{$role}', '{$permission1}', '{$permission2}')"); 
//this will give you second id// 
$second_inserted_id = mysqli_insert_id($connection); 

mysqli_query($connection,"INSERT INTO Customers(username, password, roleId, addressId) VALUES ('{$username}', '{$password}'," . $first_inserted_id . " , " . $second_inserted_id . ")"); 

//this will give you third id// 
$third_inserted_id = mysqli_insert_id($connection); 

if(mysqli_error($connection)): 
    echo mysqli_error($connection); 
endif; 
    mysqli_commit($connection); 
endif; 
+0

Genel olarak, sadece kodun değil, cevabınızı açıklayan bir metin vermelisiniz. Ayrıca, herhangi bir yerde '$ first_inserted_id' veya' $ second_inserted_id' kullanmıyorsunuz. – Mike

İlgili konular