2014-10-20 244 views
0

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

现在我想用我的另一个数组中的值扩展第一个数组。 (第一个数组的每一行的值相同,尽管严重使用Google搜索,但我找不到任何方法... 代码:(db连接之后)会话值来自另一个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

您正在覆盖循环中的'$ cid'数组。除此之外,你需要澄清一下你的问题,或者举一个例子,因为很难说出你想做什么。 – jeroen 2014-10-20 16:34:22

+0

我们需要一个当前结构的print_r和所需的结构。 – Ali 2014-10-20 16:35:54

+0

当使用'mysqli'时,您应该使用参数化查询和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)将用户数据添加到您的查询中。 **不要**使用字符串插值来实现此目的,因为您将创建严重的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman 2014-10-20 16:37:05

回答

0

的第一件事是正确的$行到$ CID阵列的插入。将其更改为$ CID [] = $行

一个客户可以有许多产品和产品都可以被许多客户购买,所以我们在这里有很多关系,你需要第三张表格来加入这两个,所以你不需要dd一行,但你需要一个新的表格来存储两个表格之间的关系。

+0

$ cid array的print_r如下所示: Array([cust_id] => 2)Array([cust_id] => 8) 目前我在数组中有2个客户ID。我希望将另一个名为“product_id”的列添加到数组中,然后为每行添加相同的值。 (来自$ pid的值)。 然后,新的数组应该存储在一个表中。 – 2014-10-20 17:49:00

0

更新使用array_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); 
}