El siguiente código PHP funciona bien cuando solo UN conjunto de valores de matriz en POST, es decir, en el valor de índice 0 ... Cuando el valor de índice es mayor que uno, las entradas duplicadas se insertan en la tabla ... por favor ayuda ...

$sql = "INSERT INTO js (s_name, s_age, s_marks, s_school) VALUES ";
foreach($_POST as $objResult)
    {
    $i = 0;
    foreach($objResult as $Result){
        $i++;
        if($i>1)// add ',' after first set of values in INSERT..
        {
            $sql .= ",";
        }
        $name = $Result['sname']; 
        $age = $Result['age']; 
        $mark = $Result['mark']; 
        $school = $Result['school']; 
        $sql .= "('".$name."','" .$age."','".$mark."','" .$school."')";
$result=$conn->query($sql);
    }}           
0
Ananthu V A 11 feb. 2015 a las 09:17

4 respuestas

La mejor respuesta

Gracias por tus sugerencias. Y cambié mi código de la siguiente manera ...

$sql = "INSERT INTO js (s_name, s_age, s_marks, s_school) VALUES ";
foreach($_POST['student'] as $Result)
	{
        $name = $Result['sname']; 
        $age = $Result['age']; 
        $mark = $Result['mark']; 
        $school = $Result['school']; 
        $sql .= "('".$name."','" .$age."','".$mark."','" .$school."'),";

    }
$sql = rtrim($sql,",");
$result=$conn->query($sql);
0
Ananthu V A 11 feb. 2015 a las 09:03

Puedes cambiar un código como este

foreach($_POST as $objResult) {
    foreach($objResult as $Result) {
        $sql .= "(" . implode(', ', $Result) . "),";
    }
}
$result=$conn->query($sql);
0
ava 11 feb. 2015 a las 09:27

Necesitas mover el

$result=$conn->query($sql);

Fuera del bucle interno, no está limpiando la cadena, por lo que seguirá agregando las entradas agregadas.

0
Endacy 11 feb. 2015 a las 06:34

Puede eliminar por completo cualquier problema con todas las iteraciones que tiene haciendo algo como esto:

foreach($_POST as $objResult) {
    foreach($objResult as $Result) {
        $sql .= "(" . implode(', ', $Result) . "),";
    }
}
$result=$conn->query($sql);

¿Y ahora notas cómo moví la consulta fuera de tus bucles? Eso asegura que lo ejecute correctamente y no en cada iteración (bucle) de los datos.


Aquí hay un Example en funcionamiento ( tienes que presionar ctrl + enter para ejecutar el código )

1
Darren 11 feb. 2015 a las 06:53