2012-09-14 17 views
5

Ho una tabella di caselle e valori, se un utente seleziona una casella di controllo selezionano il valore della id in un array chiamato checkedHW per semplicità questo è ciò codice simile:Inserire più valori in una colonna mysql?

$ids = implode(',',arrayofids); 

$sql = "insert into table(id, type) values($ids,type); 
$db->query($sql); 

interrogazione eco per il test :

"insert into table('id1,id2','type') 

ho pensato che se ho un ciclo tra questa domanda ho potuto ipoteticamente fare questo:

"insert into table('id1','type');" 

"insert into table('id2','type');" 

ma io non sono e xactly tutto sicuro di come fare, qualsiasi aiuto sarebbe meraviglioso :)

realtà ho risolto utilizzando:

for($i=0;$i<count(arrayofids); $i++){ 
$sql = "insert into table(id,type) values(array[$i], 'type'"; 
$db->query($sql);} 

Mi auguro che aiuta qualcuno e grazie ragazzi per l'aiuto!

+0

penso 'id' dataType è int. – diEcho

+0

Ho appena aggiunto un cast interno e inserisce solo una riga per il primo valore – bubbles

risposta

6

Si potrebbe fare qualcosa di simile:

$base = 'INSERT INTO table (id, type) VALUES ('; 
$array = array(1, 2, 3, 4); 
$values = implode(", 'type'), (", $array); 
$query = $base . $values . ", 'type')"; 

$db->query($query); 

Questo è quello che sarebbe stato sempre presentato:

INSERT INTO table (id, type) VALUES (1, 'type'), (2, 'type'), (3, 'type'), (4, 'type')
+0

sono riuscito a risolverlo senza usare implode, ma grazie per l'aiuto! – bubbles

0

Entrambi interrogazione sono completamente differenti

insert into table('id1,id2','type') inserirà singola fila

ID1, ID2 | digitare

mentre

insert into table('id1','type');" 

insert into table('id2','type');" 

inserirà due file

id1 | digitare
id2 | digitare

quindi se la vostra colonna id è int tipo, allora non puoi esegue prima query

0

Se si dispone di una serie di caselle di controllo, e di voler inserire i valori nella vostra tabella, ciclo si potrebbe attraverso di loro in questo modo:

<?php 

$values = array(); 

foreach ($_POST['field_name'] as $i => $value) { 
    $values[] = sprintf('(%d)', $value); 
} 

$values = implode(',', $values); 

$sql = "INSERT INTO `table_name` (`column_name`) VALUES $values"; 

questo vi darà una query SQL simile a:

INSERT INTO `table_name` (`column_name`) VALUES (1),(2),(3),(4) 

Spero che questo aiuto.

Problemi correlati