0

以下代码适用于从表单插入数组,但它将每个值插入到它自己的行中。如何将数组插入一行?

<?php 
require_once('config.php'); 
require_once('open_db.php');
$palette=$_POST['colors_palette'];
while (list ($key,$val) = @each ($palette)) {
}
For ($i=0; $i<sizeof($palette);$i++) {
$query="INSERT INTO style_test1 (colors_palette) VALUES ('".$palette[$i]."')";
Mysql_query($query) or die(mysql_error());
}
Echo "Record is inserted";
?>

<form method="post" action="insert_array.php" >
<input type="checkbox" name="colors_palette[]" value="jewel" />                
<input type="checkbox" name="colors_palette[]" value="bright" />                     
<input type="checkbox" name="colors_palette[]" value="soft" /> 
<input type="checkbox" name="colors_palette[]" value="earth" />
<input type="submit" name="Submit" value="Submit" />
</form>
4

3 回答 3

3

要作为字符串插入:

<?php 
 require_once('config.php'); 
 require_once('open_db.php');

 $palette=$_POST['colors_palette'];

 $query="INSERT INTO style_test1 (colors_palette) VALUES ('". serialize($palette) ."')";
 mysql_query($query) or die(mysql_error());

 echo "Record is inserted";
?>

然后,您可以unserialize将数据作为数组或对象返回。

不过,更好的方法是插入为JSON 格式的字符串。

$query="INSERT INTO style_test1 (colors_palette) VALUES ('". json_encode($palette). "')";

然后您可以使用json_decode将其解码回数组。

内爆:

$pal   = implode(',', $palette);
$query = "INSERT INTO style_test1 (colors_palette) VALUES ('".$pal."')";
于 2012-07-25T05:26:43.170 回答
1

要将数组转换为逗号分隔的变量,请使用implodePHP 中的函数:

$query="INSERT INTO style_test1 (colors_palette) VALUES ('".implode(',',$palette)."')";

编辑:试试这个代码:

<?php 
 require_once('config.php'); 
 require_once('open_db.php');

 $palette=$_POST['colors_palette'];

 $query="INSERT INTO style_test1 (colors_palette) VALUES ('".implode(',',$palette)."')";
 mysql_query($query) or die(mysql_error());

 echo "Record is inserted";
?>
于 2012-07-25T05:24:45.350 回答
1

你可以使用PHP函数

serialize($myArray);

此函数将数组转换为字符串。因此,您可以在行字段中插入。

并在字符串上使用反序列化来获取一个数组。

您也可以将数组内爆以获取字符串

$string = implode(',',$myArray);
于 2012-07-25T05:24:56.497 回答