0

次のコードは、フォームから配列を挿入するために機能しますが、各値を独自の行に挿入します。1 つの行に配列を挿入するにはどうすればよいですか?

<?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

配列をカンマ区切りの変数に変換するにimplodeは、PHP で関数を次のように使用します。

$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);

この関数は、配列を文字列に変換します。したがって、行フィールドに挿入できます。

文字列に対して unserialize を使用して配列を取得します。

配列を内破して文字列を取得することもできます

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