Daten aus mehrdimensionales Array in MySQL speichern - implode

erbse78

Grünschnabel
Hallo,

ich habe folgendes Problem:

1.) ich hole mir Daten aus meiner MySQL Datenbank
2.) schreibe diese in eine Tabelle

ID Spalte 1 S2 S3 S4

1 Wert1 W1 W1 W1
2 Wert2 W2 W2 W2
3 Wert3 W3 W3 W3
4 Wert4 W4 W4 W4

3.) diese können nun geändert werden
4.) diese Daten werden in mehrdimensionales Array gespeichert

Das Array Daten[ ] sieht so aus das jede Spalte eine Array ist:

Daten[ ][ID]
Daten[ ][Spalte1]
Daten[ ][Spalte2]
Daten[ ][Spalte3]
Daten[ ][Spalte4]
Code:
foreach ($_POST[Daten] as $v1){
    foreach ($v1 as $key => $v2){
    $tempdaten[$key] = $v2; // Daten in einfachem Array Speichern
    if((count($tempdaten)== 4) { // zeilenweises Speichern
    $query = "UPDATE Tabelle SET ..... where ID = ...

5.) Update-String implodieren

Und nun das Problem:

wie bekomme ich das Array §tempdaten "implodiert", dass der String am Ende so aussieht:
Code:
UPDATE Tabelle SET 
'Spalte 1' = \'W1\',
'Spalte 2' = \'W2\',
'Spalte 3' = \'W3\',
'Spalte 4' = \'W4\'
WHERE ID = jeweilige ID

6.) Speichern in MySQL - DB

Bin für jede Hilfe Dankbar.

Gruss
erbse
 
Hallo,

und du willst deine Datenabfrage in solcher Form haben?

Code:
UPDATE Tabelle SET
`Spalte 1` = 'W1',
`Spalte 2` = 'W2',
`Spalte 3` = 'W3',
`Spalte 4` = 'W4'
WHERE ID = jeweilige ID

so, nütze stripslashes() für jedes Wert W1, W2, ...
 
Zuletzt bearbeitet:
kannst du noch mal beschreiben dein Problem? Vielleicht, hab ich nicht richtig verstanden...

vielleicht habe ich mich auch "blöd" ausgedrückt :)

Ich habe eine MySQL-Datenbank in der ich Daten eintrage. Nun kann es ja mal vorkommen das Daten falsch eingegeben worden. Aus diesem Grund habe ein Formular erstellt, welches mt die Daten aus der DB abruft und in eine Tabelle (genauer in die textfelder) schreibt.
Nun kann ich die Daten ändern!

Die geänderten Daten werden in ein Array gespeichert Daten[ ]. ich habe für jede Spalte ein Array z.B. Daten[ ][Spalte1] so das Daten[ ] ein mehrdimensionales array wird.

mein Problem ist das ich die Daten in der DB mit den denen aus der Array updaten möchte. Aber ich bekomme das nicht hin :( Weil ich nicht weiß wie ich den UPDATE-String hinbekomme.

Struktur des Array:

PHP:
Array ( [0] => Array ( [Spalte1] => Wert1 ) 
[1] => Array ( [Spalte2] => Wert2) 
[2] => Array ( [Spalte3] => Wert3 ) 
[3] => Array ( [Spalte4] => Wert4 ) 

[4] => Array ( [Spalte1] => Wert5 ) 
[5] => Array ( [Spalte2] => Wert6 ) 
[6] => Array ( [Spalte3] => Wert7 ) 
[7] => Array ( [Spalte4] => Wert8 ) 

[8] => Array ( [Spalte1] => Wert9 ) 
[9] => Array ( [Spalte2] => Wert10 ) 
[10] => Array ( [Spalte3] => Wert11 ) 
[11] => Array ( [Spalte4] => Wert12)
 
Ich verstehe glaube ich immernoch nicht ganz, aber falls ich doch richtig liege, sollte dies funktionieren:

PHP:
$count = count( $array );

$db_query = 'UPDATE `table` SET ';

for( $i = 0; $i < $count; $i++ )
{
    foreach( $array[$i] as $key => $var )
    {
        $db_query .= '`' .$key. '` = "' .$var. '"';
        if( $i != $count-1 )
        {
            $db_query .= ', ';
        }
    }
}

$db_query .= ' WHERE `id` = 1';
 
Code:
foreach($array as $id=>$zeile)) {$query = 'UPDATE `table` SET ';
$add_str = '';
foreach($zeile as $key=>$value) {
     $query .= .= '`' .$key. '` = "' .$value. '"';
     $add_str = ', ';
}
$query .= ' WHERE `id` = '.$id; 
}
 
Ich verstehe glaube ich immernoch nicht ganz, aber falls ich doch richtig liege, sollte dies funktionieren:

PHP:
$count = count( $array );

$db_query = 'UPDATE `table` SET ';

for( $i = 0; $i < $count; $i++ )
{
    foreach( $array[$i] as $key => $var )
    {
        $db_query .= '`' .$key. '` = "' .$var. '"';
        if( $i != $count-1 )
        {
            $db_query .= ', ';
        }
    }
}

$db_query .= ' WHERE `id` = 1';

Das kommt der Sache schon verdammt nah. Aber, die zeilen müssen einzeln gespeichert werden, weil jede ne andere ID hat (Spalte1).
 
Dazu ist dein Array aber nicht geeignet .
Baue dein Array anders auf, beispielsweise:
Code:
Array
(
    [0] => Array
        (
            [id] => 1
            [0] => Array
                (
                    [spalte 1] => wert 1
                    [spalte 2] => wert 2
                    [spalte 3] => wert 3
                    [spalte 4] => wert 4
                )

        )

    [1] => Array
        (
            [id] => 2
            [0] => Array
                (
                    [spalte 5] => wert 5
                    [spalte 6] => wert 6
                    [spalte 7] => wert 7
                    [spalte 8] => wert 8
                )

        )

)

Dann wäre folgendes möglich:
PHP:
    $count = count( $array );
    for( $i = 0; $i < $count; $i++ )
    {
        $j = 0;
        $values = count( $array[$i][0] );

        $db_query = 'UPDATE `table` SET ';
        foreach( $array[$i][0] as $key => $var )
        {
            $j++;
            $db_query .= '`' .$key. '` = "' .$var. '"';
            if( $j != $values )
            {
                $db_query .= ', ';
            }
        }
        $db_query .= ' WHERE `id` = '.$array[$i]['id'];
        // query hier ausführen
    }
 
Zurück