如何从php分配客户ID

时间:2015-03-29 14:34:45

标签: php mysql sql

我正在尝试向数据库发送订单。我为客户创建了一个表单来填写他的详细信息然后在提交时我有一个查询,它将客户的详细信息发送到数据库。我还有另一个查询,它在一个链接表中发送购物车中的项目。链接表将客户与产品链接起来。


问题在于我的第二个查询我无法用他的id引用客户,因为客户尚未存储在系统中。客户ID是在带有订单的msql中自动创建的。

2 个答案:

答案 0 :(得分:0)

看看here如何做到这一点。您希望使用mysqli_insert_id(或者它的面向对象的对应方)来获取数据库中最后插入的ID(如果您的数据库使用自动递增的密钥),并在第二个查询中使用它。

看一下这个样本:

<?php

$order_item = 'test_item';

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "INSERT INTO customers VALUES (NULL, 'first_name', 'last_name')";
$mysqli->query($query);

$newid = $mysqli->insert_id;

printf ("New Record has id %d.\n", $newid);


if ($stmt = $mysqli->prepare("INSERT INTO orders VALUES (NULL, ?, ?)")) {
    /* bind parameters for markers */
    $stmt->bind_param("is", $newid, $order_item);

    /* execute query */
    $stmt->execute();
}

/* close connection */
$mysqli->close();
?>

答案 1 :(得分:0)

如果我理解正确,我认为这是一个解决方案。如果你可以发布一些代码和问题,那会好得多。

您可以使用

检测发送到第二个表的最新查询
SELECT `customer_id` from `orders` order by DESC limit 1; 

然后你应该能够使用php来+1来检索:

$newid = $mostrecentid + 1;

然后,这将为您提供可用于第二次查询的最新ID