在PHP数组中添加一列

时间:2014-10-20 16:27:09

标签: php mysql arrays

我有一个从包含多个值的mysqli select statment创建的数组。 (客户名单) 然后我有另一个选择只包含一个值,我也存储在另一个数组中。完成后我想将信息存储在我的数据库中。 它是应该链接到同一产品的客户列表。

现在我想扩展第一个数组,其中一个新列的值来自我的另一个数组。 (第一个数组的每一行都有相同的值。尽管有严肃的谷歌搜索,但我无法找到任何办法。 代码:(在数据库连接之后)会话值来自另一个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.

现在是什么?....

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以在此网站使用array_merge()http://php.net/manual/en/function.array-merge.php

答案 2 :(得分:0)

更新,我通过以下方式解决了:(代码中有注释) 感谢您的帮助和好主意!

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);
}