2016-09-02 21 views
0

内のすべてのループを挿入せずにデータベースに配列を挿入するどのように私は、チェックボックスから、この配列を持つPHP

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

はちょうど 'それをimplode'が、なぜ私は破知らない気の毒という – Ghost

+0

ようにそれを必要とするあなたは私の例を与えることができますか? – Otachan

+0

@Otachan私は答えを追加します。コードの私の例を見ることができます。それ以上の質問があれば教えてください –

答えて

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

} 
?> 
1

implode()関数を使用します。配列要素を文字列で結合します。

string implode (string $glue , array $pieces) 
string implode (array $pieces) 

この文字列をデータベースに保存します。

+0

私はそのループの中に入れますか?または後? – Otachan

+0

ループを必要としない場合よりもimplodeを使用している場合は、配列を文字列に変換します –

+0

グルー文字で注意してください。その文字列は配列文字列の一部であってはなりません – Ish

1

MySQLで1つのクエリで複数の行を挿入する方法については、この記事の回答を参照してください。 Insert multiple rows with one query MySQL

このコードは、チェックボックス配列内のすべての項目に対して1つの挿入クエリを作成します。

if(!empty($_POST['check_list'])) { 
    $insert_sql = "('".join("'),('", $_POST['check_list'])."')"; 
    $query = $handler->query("INSERT INTO images (color_tags) VALUES ". $insert_sql); 
} 
1

チェックそれは、テーブル

にブランク値を挿入する必要がカンマ区切りに値を変換してtable.Otherwiseへの変換の必要性を、それを挿入しないとしていない場合に投稿アレイの数は、0か否より大きい場合
if(count($_POST['check_list']) > 0) 
    $list = implode(",",$_POST['check_list']); 
else 
    $list = ''; 

$query = $handler->query("INSERT INTO images (color_tags) VALUES('$list')"); 
+0

コード内にいくつかのコメントを説明または追加します。 –

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関数を使って配列を作り直すことができます。

須藤例

$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); 
関連する問題