如何从一个表中选择id并插入到其他表中

时间:2017-07-05 05:37:41

标签: php mysql

 $select = "SELECT MAX(order_id) FROM `order`";
       mysql_query($select);


   foreach ($_COOKIE['item'] as $key12 => $value) {
        $value22 = explode("__", $value);

        $query1 = "INSERT INTO `cart`(`cart_id`, `product_id`, `order_id`, `Quantity`, `total_price`) VALUES ('',$value22[5],'$select','$value22[3]','$value22[4]')";
        $result2 = mysql_query($query1);

这个输出是SELECT MAX(order_id) FROM order,那么这个选择和插入id的解决方案是什么

3 个答案:

答案 0 :(得分:0)

$select="SELECT MAX(order_id) FROM `order`";
$row = mysqli_query($con,$select);
if(mysqli_num_rows($row)>0)
{
    while($data = mysqli_fetch_assoc($row))
    {
       $order_id = $data['order_id'];
    }
}


  //This way you can fetch data

然后在查询中为order_id插入值时使用此项,如

$query1="INSERT INTO `cart`(`cart_id`, `product_id`, `order_id`, `Quantity`, `total_price`) VALUES ('',$value22[5],'$select','$order_id','$value22[4]')";

答案 1 :(得分:0)

从db连接中找到最后插入的id的另一种方法:

mysql_query('INSERT INTO order(a) VALUES('b'));
$id = mysql_insert_id();

然后$ id将是最后插入的id

答案 2 :(得分:0)

建议:

仅使用一个批INSERT次查询。它使您有机会一次插入多行,例如通过只运行一个查询。而且速度要快得多。

使用的方法:

  • order_id中提取order的最大值并分配给$maxOrderId
  • 遍历cookie项目并构建相应的行 INSERT sql语句的一部分。然后将其添加到数组$insertRowValues
  • 最后将$insertRowValues数组内嵌到批处理INSERT语句中。
  • 运行批INSERT次查询 - 仅一次。
<?php

$select = "SELECT MAX(order_id) FROM `order`";
$maxOrderId = mysql_query($select);

$insertRowValues = array();

foreach ($_COOKIE['item'] as $key12 => $value) {
    $value22 = explode("__", $value);

    $insertRowValues[] = "('', " . $value22[5] . ", '" . $maxOrderId . "', '" . $value22[3] . "', '" . $value22[4] . "')";
}

$query1 = "INSERT INTO `cart` 
            (`cart_id`, `product_id`, `order_id`, `Quantity`, `total_price`) 
            VALUES " . implode(', ', $insertRowValues);

$result2 = mysql_query($query1);

其他建议:

  • 使用mysqliPDO代替mysql,因为自PHP 5.5.0起已删除mysql(请参阅MySQL Library - Introduction);
  • 使用异常处理;
  • 使用预准备语句来避免MySQL注入。
P.S:我无法测试任何东西。

祝你好运!