从一个表中获取最后一个插入ID以放入另一个表中

时间:2012-03-14 15:51:12

标签: php sql prepared-statement shopping-cart

对于那些开发人员来说可能是一个简单的

我有这个代码将order_id和order_name插入'orders'表:

<?php
// start the session handler
require_once('dbfunction.php');

//connect to database
$conn = DB();

require_once('header.php');

//should we process the order?
if (isset($_POST['process'])) {

$order_name = $_POST['order_name'];

//create initial order
$stmt = $conn2->prepare("INSERT INTO orders (order_name) VALUES (?)");

//bind the parameters
    $stmt->bind_param('s', $order_name);

    // Execute query
    $stmt->execute();

我现在想要将订单商品插入到order_items表中,我似乎无法保留插入“订单”表时创建的相同ID,并将其与order_items一起添加到“order_items”表中。这是我的代码:

//this gets the most recent auto incremented ID from the database - this is the order_id we have just created
$order_id = mysql_insert_id();

//loop over all of our order items and add to the database
foreach ($_SESSION['order'] as $item) {

  $prod_id = $item['prod_id'];
  $quantity = $item['quantity'];
  $prod_type = $item['prod_type'];

  $stmt = $conn2->prepare("INSERT INTO order_items (order_id, prod_id, quantity, prod_type) VALUES (?, ?, ?, ?)");

  //bind the parameters
    $stmt->bind_param('iiis', $order_id, $prod_id, $quantity, $prod_type);

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

    echo "<p class='black'>Order Processed</p>";

2 个答案:

答案 0 :(得分:3)

我猜它是因为你正在使用的任何数据库库正在做一些使mysql_insert_id无效的事情(假设它甚至使用mysql函数)。我建议您查看图书馆,找出他们建议您使用的方法。

答案 1 :(得分:1)

SQL Server有@@ IDENTITY

看起来mySQL有LAST_INSERT_ID();

我的猜测是你正在使用mySQL。如果没有,那么请让我知道版本,以便我可以更新