2014-10-20 246 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); 
}