duda inserción múltiple en sql mediante php

Hola amigos, tengo una pequeña duda, seré breve:

Tengo un php que hace inserciones en una tabla.

a este php llega un string con los id a insertar, por ejemplo $list= 12,34,13

habría alguna forma de hacer la inserción directa de 3 registros usando ese string? o no me queda otra que separar la cadena e insertar uno a uno los registros...

Muchas gracias a todos. Saludos.
Hola:

Hmmm no se puede, hasta donde sé, utilizar la cadena directamente. Lo que puedes hacer (y deberías) es algo así:

$query = "INSERT INTO tabla (ID, otras_columnas) VALUES ";
$arr    = explode( ',', $list );
foreach( $arr as $k => $v ) {
  if( is_numeric( $v ) ) // Compruebas que sea un número. Esto es para prevenir inserción de código maligno, y los ID, generalmente, son numéricos.
    $query .= "('$v'),";
}

$query = trim( $query, ',' ); // Remueve la coma que sobrará después del foreach.

De esta forma habrás construido la consulta, pero como dije, desconozco la forma de hacer así: INSERT INTO tabla VALUES ('$list'); a no ser de que $list viniera pre-formateada como ('id1'), ('id2'), ('id3'), etc.
skaparate escribió:Hola:

Hmmm no se puede, hasta donde sé, utilizar la cadena directamente. Lo que puedes hacer (y deberías) es algo así:

$query = "INSERT INTO tabla (ID, otras_columnas) VALUES ";
$arr    = explode( ',', $list );
foreach( $arr as $k => $v ) {
  if( is_numeric( $v ) ) // Compruebas que sea un número. Esto es para prevenir inserción de código maligno, y los ID, generalmente, son numéricos.
    $query .= "('$v'),";
}

$query = trim( $query, ',' ); // Remueve la coma que sobrará después del foreach.

De esta forma habrás construido la consulta, pero como dije, desconozco la forma de hacer así: INSERT INTO tabla VALUES ('$list'); a no ser de que $list viniera pre-formateada como ('id1'), ('id2'), ('id3'), etc.

No creo que exista forma de hacer lo que yo pretendía hacer.
De todas formas ya lo tengo separando las id's.
No conocía la función explode, es muy útil para fraccionar cadenas.

Muchas gracias Skaparate [;)]
Si, explode es muy útil y se complementa con su opuesto, implode, que hace lo contrario: crear una cadena a partir de un arreglo:

$arr = array( 1, 2, 3 );
$str = implode( '-', $arr );
echo $str;

El primer parámetro es el caracter que se utilizará para separar los elementos, mientras que el segundo es el arreglo con los elementos. En el ejemplo anterior, la cadena sería "1-2-3".

Lee esto cuando quieras ver las funciones que se pueden utilizar con el texto (strings).
skaparate escribió:Si, explode es muy útil y se complementa con su opuesto, implode, que hace lo contrario: crear una cadena a partir de un arreglo:

$arr = array( 1, 2, 3 );
$str = implode( '-', $arr );
echo $str;

El primer parámetro es el caracter que se utilizará para separar los elementos, mientras que el segundo es el arreglo con los elementos. En el ejemplo anterior, la cadena sería "1-2-3".

Lee esto cuando quieras ver las funciones que se pueden utilizar con el texto (strings).

Gracias [:)]