I have this array from the checkbox
<?php
$query = $handler->query("SELECT * FROM colors");
while ($row = $query->fetch()) {?>
<input type="checkbox" name="check_list[]" id="<?php echo $row['id']?>" value="<?php echo $row['hex'];?>">
<?php } ?>
PHP Query
<?php
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
$query = $handler->query("INSERT INTO images (color_tags) VALUES ('$check')");
}
}
?>
I want to insert the data's from the array without inserting it on every row I want it to be just separated in commas like data1,data2,data3 then insert it.
Store it in json.
json_encode($array)
<?php
if(!empty($_POST['check_list'])) {
$query = $handler->query("INSERT INTO images (color_tags) VALUES ( json_encode($_POST['check_list']))");
}
?>
Use implode() function. It join array elements with a string.
string implode ( string $glue , array $pieces )
string implode ( array $pieces )
and save the string in database.
See answer in this post on how to insert multiple rows with one query in MySQL. Insert multiple rows with one query MySQL
This code will create a single insert query for all the items in your checkbox array.
if(!empty($_POST['check_list'])) {
$insert_sql = "('".join("'),('", $_POST['check_list'])."')";
$query = $handler->query("INSERT INTO images (color_tags) VALUES ". $insert_sql);
}
check if count of posted array is greater than 0 or not, if it has then convert values into comma separated and insert it into table.Otherwise no need of conversion and not need to insert blank values into table
if(count($_POST['check_list']) > 0)
$list = implode(",",$_POST['check_list']);
else
$list = '';
$query = $handler->query("INSERT INTO images (color_tags) VALUES('$list')");
I did not read your last line of require to keep it like a separated list. So, modifying my example
<?php
if(!empty($_POST['check_list']) && is_array($_POST['check_list'])) {
// use pipe "|" to separate values
$color_list = implode('|', $_POST['check_list']);
// $handler -> mysqli or mysql
$color_list = $handler->real_escape_string($city);
$query = $handler->query("INSERT INTO images (color_tags) VALUES ('$color_list')");
}
?>
Later you can use explode function to make it array again.
Sudo Example:
$DB_STRING_VALUE = "Fetch color_tags value from image table"
$list_of_colors = $DB_STRING_VALUE;
if(!empty($DB_STRING_VALUE)
$list_of_colors = explode('|', $DB_STRING_VALUE);