2012-09-14 28 views
5

Tengo una tabla de casillas de verificación y valores, si un usuario selecciona una casilla de verificación que seleccionan el valor del id en una matriz llamada checkedHW Para simplificar esto es lo que el código se parece a:¿Insertar valores múltiples en una columna mysql?

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

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

consulta de eco para las pruebas :

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

que pensé que si yo bucle a través de esta consulta que hipotéticamente podría hacer esto:

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

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

pero no estoy electrónico xactly muy seguro de cómo hacerlo, cualquier ayuda sería maravilloso :)

realidad lo resolví usando:

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

Yo espero que ayude a alguien y gracias chicos por la ayuda!

+0

Creo 'id' tipo de datos es de tipo int. – diEcho

+0

Acabo de agregar un intcast y solo inserta una fila para el primer valor – bubbles

Respuesta

6

se podría hacer algo como esto:

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

$db->query($query); 

Esto es lo que sería conseguir presentó:

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

Pude resolverlo sin usar implode, ¡pero gracias por la ayuda! – bubbles

0

Tanto consulta son completamente diferentes

insert into table('id1,id2','type') insertará una hilera

ID1, ID2 | escriba

mientras que

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

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

se inserte dos filas

id1 | tipo
id2 | escriba

así que si su columna Identificación es int tipo entonces no puedes correr primera consulta

0

Si usted tiene una serie de casillas de verificación, y el deseo de insertar los valores en la tabla, usted podría bucle a través de ellos de esta manera:

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

esto le dará una consulta SQL similar a:

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

Espero que esta ayuda.

Cuestiones relacionadas