将列添加到PHP数组

将列添加到PHP数组,php,mysql,arrays,Php,Mysql,Arrays,我有一个从mysqli select语句创建的数组,它包含多个值。客户名单 然后我有一个仅包含一个值的另一个select,该值也存储在另一个数组中。完成后,我希望将信息存储在数据库中。 这是一个应该链接到同一产品的客户列表 现在我想用另一个数组中的一个值扩展第一个数组。第一个数组的每一行的值相同。我找不到任何方法来做这件事,尽管认真的谷歌搜索。。。 代码:数据库连接后会话值来自另一个PHP脚本,并且是正确的 session_start(); $product = $_SESSION['prod_

我有一个从mysqli select语句创建的数组,它包含多个值。客户名单 然后我有一个仅包含一个值的另一个select,该值也存储在另一个数组中。完成后,我希望将信息存储在数据库中。 这是一个应该链接到同一产品的客户列表

现在我想用另一个数组中的一个值扩展第一个数组。第一个数组的每一行的值相同。我找不到任何方法来做这件事,尽管认真的谷歌搜索。。。 代码:数据库连接后会话值来自另一个PHP脚本,并且是正确的

session_start();
$product = $_SESSION['prod_name'];
$ka      = $_SESSION['ka'];
//print_r($_SESSION);

$customers = mysqli_query($link,"
SELECT cust_id FROM customers
INNER JOIN ka_chain on ka_chain.chain_id=chain
WHERE ka_chain.name='$ka'");

$cid=array(); //array with multiple records
while($row = mysqli_fetch_assoc($customers)) {
    $cid = $row;
    print_r($cid);
}

$prod_id = mysqli_query($link,
"SELECT prod_id FROM products
WHERE prod_name='$product'") ;
$pid     = mysqli_fetch_array($prod_id); //array with only one row.

现在怎么办?…

第一件事是正确地将$行插入到$cid数组中。将其更改为$cid[]=$row


一个客户可以拥有多个产品,一个产品可以被多个客户购买。所以我们这里有一个多对多的关系。您需要第三个表来连接这两个表,因此不需要添加行,但需要一个新表来存储这两个表之间的关系

你可以在这个网站上使用array\u merge

一个更新,我用下面的方法解决了它:用代码注释 谢谢你的帮助和好主意

session_start();
$product=$_SESSION['prod_name'];
$ka=$_SESSION['ka'];

//get customer assigned to ka chain
$customers = mysqli_query($link,"
SELECT cust_id FROM customers
INNER JOIN ka_chain on ka_chain.chain_id=chain
WHERE ka_chain.name='$ka'");
// get product id
$prod_id = mysqli_query($link,"SELECT prod_id FROM products
WHERE prod_name='$product'") ;
//add product id to array and convert to int
$pid=mysqli_fetch_array($prod_id);
$pid_int = (int) $pid['prod_id'];

// Create new array to add product id to customers
$cust_product = array();
while($row = mysqli_fetch_assoc($customers)) {
  $item['cust_id'] = (int)$row['cust_id'];
  $item['product_id'] =$pid_int;
  $cust_product[]=$item;
}
 //insert data to new array
if(is_array($cust_product)){
$sql = "INSERT INTO cust_products (cust_id, product_id) values ";
$valuesArr = array();
foreach($cust_product as $row){
    $c_id = mysqli_real_escape_string($link, $row['cust_id'] );
    $p_id = mysqli_real_escape_string($link, $row['product_id'] );
    $valuesArr[] = "('$c_id', '$p_id')";
}
$sql .= implode(',', $valuesArr);

mysqli_query($link,$sql) or die(mysqli_error($link));
printf ("New Record has id %d.\n", $mysqli->insert_id);
}

您正在覆盖循环中的$cid数组。除此之外,您还需要澄清您的问题,可能需要举个例子,因为很难判断您想要做什么。我们需要打印当前结构和所需结构。使用mysqli时,您应该使用参数化查询,并将用户数据添加到查询中。不要使用字符串插值来完成此操作,因为您将创建严重的。打印$cid数组如下所示:数组[cust\u id]=>2数组[cust\u id]=>8当前我在数组中有2个客户id。我希望在数组中添加另一个名为product_id的列,然后为每一行添加相同的值。值从$pid开始。然后,新数组应该存储在一个表中。