我有一个从包含多个值的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.
现在是什么?....
答案 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);
}