【发布时间】:2016-04-13 15:30:31
【问题描述】:
是否可以获取前两个查询的insert_id?我能够得到最后一个,但想要前两个。在下面的示例中,处理完表单后,我想在地址表中添加一个新角色,在角色表中添加新行,然后使用前两个查询中插入的查询中的 id 向客户添加一行。这有可能吗?
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;
最后一个查询中的mysqli_insert_id($connection) 将从Roles 插入中提取ID 两次。有什么方法可以让它从前两个查询中获取两个 Id 值?
【问题讨论】:
-
不,它会得到最后插入的 id,正如它在锡上所说的那样。在每次查询后调用它,并将其存储在变量中。
-
只需将其保存为变量即可。
/* execute first query */ $id1 = mysqli_insert_id($connection); /* execute second query */ $id2 = mysqli_insert_id($connection); -
谢谢!刚接触这些东西,所以不知道如果将 insert_id 函数放在查询之外是否会失败。
-
为什么您认为函数的工作方式会有所不同,具体取决于您是将结果分配给变量还是将其用作连接的一部分?函数就是一个函数,它只是返回一个值,你可以随意使用这个值。
-
@TaylorFoster 如果放在查询之外也不会失败。
标签: php mysql mysqli transactions