Same Id but multiple different product in SQL.
Data should be retrieved from SQL and Output should be shortened to one line for each ID using PHP.
EXAMPLE:
SQL
ID | Product |
---|---|
001 | Laptop |
001 | Monitor |
001 | Speaker |
002 | Phone |
003 | Other Services |
Expected Output
PHP
ID | Product |
---|---|
001 | Laptop, Monitor, Speaker |
002 | Phone, Case |
003 | Other Services |
MY CODE
$sql = "SELECT id, product From Stock";
$result = mysqli_query($conn, $sql);
while ($row = $result->fetch_array()){
$id[] = $row["id"];
$product[] = $row["product"];
}
$max_id = count($id);
$duplicate_id = array();
for($i=0; $i<$max_id;$i++){
$duplicate_m[$id[$i]] = $id[$i] = $product[$i];
}
print_r($duplicate_m);
CURRENT OUTPUT
[001] => Laptop
[002] => Phone
[003] => Other Services
4
Answers
change your code to this
You use associative array, and override the values of the
$duplicate_m
array.You should check if key exists, and then save the element. Also, you should use multidimensional array.
So
Depending on your version of sql server, you can use
string_agg
functionShould return your data in the way you want, without transformations in PHP code.
For other versions you can check this other question in SO with the needed code =>
ListAGG in SQLSERVER
You can add the product to an array with id index in this way: