0

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.

Otachan
  • 79
  • 1
  • 1
  • 8

5 Answers5

1

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.

Mayank Pandeyz
  • 25,704
  • 4
  • 40
  • 59
1

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']))");

}
?>
Ish
  • 2,085
  • 3
  • 21
  • 38
1

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);
}
Community
  • 1
  • 1
1

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')");
1

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);
Nouman Arshad
  • 593
  • 2
  • 7