Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL-Befehl auf Schleife

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • benschworld
    hat ein Thema erstellt SQL-Befehl auf Schleife.

    SQL-Befehl auf Schleife

    Hey Leute,
    hab nen Problem bei einer SQL-Anweisung. Dazu erstmal folgender Code

    PHP-Code:
    for ($i=1$i<=$countrecord-1$i++)
        {
        
        
    //Hier sind noch etwa 20Zeilen, in denen die $id-werte an die Arrays zugewiesen werden
        
        
    $sql .= ",('$record_id','$date_convert','$time', '$id101'";
        for (
    $j=0$j<$countsensor$j++){
          if (
    $xml->record->sensor[$j]['ID'] == '102'){
          
    $id102 =  $xml->record->sensor[$j]['v'];
          
          }

            if (
    $xml->record->sensor[1]['ID'] != '102'){
            
    $id102 "";
            }
        }
        
    $sql .= ", '$id102', '$id203', '$id204', '$id205', '$id301', '$id401', '$id402', '$id503', '$id504', '$id505', '$id506', '$id507', '$id508', '$id509', '$id510', '$id511')"

    Und zwar geht es mir darum wie ich die $id102 in die Datenbank per Schleife schreiben soll. Da das id102 Array an verschiedenen Positionen in dem XML-Dokument ist, soll der Befehl lauten: Wenn irgend ein Array 102 als id hat dann, schreibe in Datenbank und wenn das Array[1] id 102 ist, dann nicht, bzw. 0, mein Lösungsvorschlag welcher aber nicht funktionier wäre

    PHP-Code:
    for ($i=1$i<=$countrecord-1$i++)
        {
        
        
    //Hier sind noch etwa 20Zeilen, welche aber nicht zur Problembehandlung beitragen
        
        
    $sql .= ",('$record_id','$date_convert','$time', '$id101'";
        for (
    $j=0$j<$countsensor$j++){
          if (
    $xml->record->sensor[$j]['ID'] == '102'){
          
    $id102 =  $xml->record->sensor[$j]['v'];
          
    $sql .= ", '$id102'"//<--------
          
    }

            if (
    $xml->record->sensor[1]['ID'] != '102'){
            
    $id102 "";
            
    $sql .= ", '$id102'"//<-------
            
    }
        }
        
    $sql .= ", '$id203', '$id204', '$id205', '$id301', '$id401', '$id402', '$id503', '$id504', '$id505', '$id506', '$id507', '$id508', '$id509', '$id510', '$id511')"

    Und wenn ich es so ausführe wie gerade beschrieben, dann meckert SQL das: Column count doesn't match value count at row 2

  • Paul.Schramenko
    antwortet
    also:
    wie mein Vorredner gesagt hat bei echo muss eine Ausgabe kommen

    mach folgendes nahdem dein $sql fertig erstellt wurde

    PHP-Code:
    <?php
    error_reporting
    (-1);
    die(
    'sql: ' $sql);
    Und poste mal die ganze Ausgabe...

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Wenn $sql gesetzt ist und nicht überschrieben wird
    PHP-Code:
    $sql "INSERT INTO $table (record_id, date, time, id101, id102, id203, id204, id205, id301, id401, id402, id503, id504, id505, id506, id507, id508, id509, id510, id511) VALUES ('$record_id1', '$date_convert1', '$time1', '$id101_1', '$id102_1', '$id203_1', '$id204_1', '$id205_1', '$id301_1', '$id401_1', '$id402_1', '$id503_1', '$id504_1', '$id505_1', '$id506_1', '$id507_1', '$id508_1', '$id509_1', '$id510_1', '$id511_1')"
    muß bei echo $sql; ne Ausgabe kommen!

    Error-Report anschalten und Fehler posten, wäre noch ne Alternative...

    Einen Kommentar schreiben:


  • benschworld
    antwortet
    Das hatte ich auch schon probiert, da kommt aber gar keine Ausgabe. Finde ich aber jetzt nicht als Fehler, wenn da nix passiert.
    Auf jeden Fall will ich versuchen das ohne Keys hinzubekommen.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    Hmm spontan keine Idee...
    Mach mal zu testzwecken ein
    Code:
    <?php
    echo $sql;
    und für den query nicht aus

    Einen Kommentar schreiben:


  • benschworld
    antwortet
    Ja das sollte ich noch erwähnen, record_id ist nicht der Primärschlüssel. Primärschlüssel ist "prim_id" und wird per auto_increment hinzugefügt. Also spielt hier keine Rolle in der Insert.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    Ich gehe jetzt mal davon aus, das "record_id" in deiner Tabelle: primary key und auto_increment hat.
    Wieso fügst du diese id mit der Schleife ein?

    Einen Kommentar schreiben:


  • benschworld
    antwortet
    Das is nen ziemlich langer Code, da viele Daten eingetragen werden sollen: Der steht direkt vor der ersten For-Schleife:
    PHP-Code:
    $sql "INSERT INTO $table (record_id, date, time, id101, id102, id203, id204, id205, id301, id401, id402, id503, id504, id505, id506, id507, id508, id509, id510, id511) VALUES ('$record_id1', '$date_convert1', '$time1', '$id101_1', '$id102_1', '$id203_1', '$id204_1', '$id205_1', '$id301_1', '$id401_1', '$id402_1', '$id503_1', '$id504_1', '$id505_1', '$id506_1', '$id507_1', '$id508_1', '$id509_1', '$id510_1', '$id511_1')"
    Der schreibt nur den ersten Eintrag in die DB, die anderen soll er dann per Schleife hineinschreiben. So wie im ersten Post von mir der erste Codeschnipsel funktioniert das auch alles Prima, nur bei der id102 verhakt der sich, da das Array da varriert.

    Einen Kommentar schreiben:


  • Paul.Schramenko
    antwortet
    wie sieht denn der Code aus, der das SQL insertern will?

    Einen Kommentar schreiben:

Lädt...
X