我从复选框中找到了这个数组
<?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查询
<?php
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
$query = $handler->query("INSERT INTO images (color_tags) VALUES ('$check')");
}
}
?>
我想从数组插入数据而不将其插入每一行 我希望它只用逗号分隔,如data1,data2,data3,然后插入它。
答案 0 :(得分:1)
使用implode()函数。它用字符串连接数组元素。
string implode ( string $glue , array $pieces )
string implode ( array $pieces )
并将字符串保存在数据库中。
答案 1 :(得分:1)
将其存储在json中。
json_encode($array)
<?php
if(!empty($_POST['check_list'])) {
$query = $handler->query("INSERT INTO images (color_tags) VALUES ( json_encode($_POST['check_list']))");
}
?>
答案 2 :(得分:1)
请参阅本文中有关如何在MySQL中使用一个查询插入多行的答案。 Insert multiple rows with one query MySQL
此代码将为复选框数组中的所有项创建单个插入查询。
if(!empty($_POST['check_list'])) {
$insert_sql = "('".join("'),('", $_POST['check_list'])."')";
$query = $handler->query("INSERT INTO images (color_tags) VALUES ". $insert_sql);
}
答案 3 :(得分:1)
检查发布数组的计数是否大于0,如果已经将值转换为逗号分隔并将其插入表中。否则无需转换,也不需要在表中插入空值
preg_match_all('/{{ type=\"(.+)\" }}/U', $html, $matches, PREG_SET_ORDER);
答案 4 :(得分:1)
我没有阅读你的最后一行要求,以保持它像一个单独的列表。所以,修改我的例子
<?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')");
}
?>
稍后你可以使用explode函数再次使它成为数组。
Sudo示例:
$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);