Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL插入…仅为一列选择_Php_Mysql_Database - Fatal编程技术网

Php MySQL插入…仅为一列选择

Php MySQL插入…仅为一列选择,php,mysql,database,Php,Mysql,Database,我想在我的表中插入多行,这个查询的数据是从前端获取的。此查询中的一列不是从前端传递的,它的值是在查询执行时从另一个表确定的。我可以将这些数组放入循环中,对每个项执行一个选择查询和一个插入查询,但我想避免它,因此我创建了一个大的插入查询!直到这里一切都很好,但现在一个值应该来自另一个表 我可以使用插入…选择方法 它允许插入多行,所有匹配的行都被插入&我可以在selectpart中传递一个伪列值来定制查询。但现在的问题是这些“伪造列”对于所有行都是相同的,它们应该在循环中显示,每个循环都不同!如何

我想在我的表中插入多行,这个查询的数据是从前端获取的。此查询中的一列不是从前端传递的,它的值是在查询执行时从另一个表确定的。我可以将这些数组放入循环中,对每个项执行一个选择查询和一个插入查询,但我想避免它,因此我创建了一个大的插入查询!直到这里一切都很好,但现在一个值应该来自另一个表

我可以使用插入…选择方法

它允许插入多行,所有匹配的行都被插入&我可以在selectpart中传递一个伪列值来定制查询。但现在的问题是这些“伪造列”对于所有行都是相同的,它们应该在循环中显示,每个循环都不同!如何做到这一点

场景

$products = array(
    "1" => array(
        "product_name" => "apple",
        "units" => "1",
    ),
     "2" => array(
        "product_name" => "mango",
        "units" => "3",
    ),
);
假设这是我从前端获得的数组,每个键都是产品id,其中包含购物车中产品的其他描述。现在我将把它插入到
订单
表中,但缺少价格,我必须从
产品
表中获取它!我可以使用产品id执行
选择

类似问题:

此答案使用伪造的列:

从已接受的答案中复制:

这里的
$site
对于所有插入的记录都是相同的,我希望每个记录根据我的数组而有所不同


我研究了这个主题,但没有找到想要的答案:(

如果有帮助,试试这段代码

<?php 
$products = array(
  "1" => array(
    "product_name" => "apple",
    "units" => "1",
  ),
  "3" => array(
    "product_name" => "mango",
    "units" => "3",
  ),
  "7" => array(
    "product_name" => "mango",
    "units" => "3",
  ),
);


$result = $conn->query("SELECT product_id, product_price FROM product_table WHERE product_id IN (".implode(',', array_keys($products)).")");
while($row = $result->fetch_assoc()) {
  $prod_price[$row['product_id']] = $row['product_price'];
}

$qry = array();
foreach ($products as $key => $value) {
   $qry[] = "('".$value['product_name']."', '".$value['units']."', '".$prod_price[ $key]."')";
}

$insert = "INSERT INTO orders (`product_name`, `units`, `product_price`) VALUES ".implode(', ', $qry);

Hpw你将这两个表关联起来了吗?是一对一还是一对多关系?@manian用虚拟场景更新了我的问题,给出了一个想法。对于每个项目,一旦从另一个表返回一个值。
<?php 
$products = array(
  "1" => array(
    "product_name" => "apple",
    "units" => "1",
  ),
  "3" => array(
    "product_name" => "mango",
    "units" => "3",
  ),
  "7" => array(
    "product_name" => "mango",
    "units" => "3",
  ),
);


$result = $conn->query("SELECT product_id, product_price FROM product_table WHERE product_id IN (".implode(',', array_keys($products)).")");
while($row = $result->fetch_assoc()) {
  $prod_price[$row['product_id']] = $row['product_price'];
}

$qry = array();
foreach ($products as $key => $value) {
   $qry[] = "('".$value['product_name']."', '".$value['units']."', '".$prod_price[ $key]."')";
}

$insert = "INSERT INTO orders (`product_name`, `units`, `product_price`) VALUES ".implode(', ', $qry);