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

  • 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

  • #2
    wie sieht denn der Code aus, der das SQL insertern will?
    "My software never has bugs, it just develops random features."
    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

    Kommentar


    • #3
      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.

      Kommentar


      • #4
        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?
        "My software never has bugs, it just develops random features."
        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

        Kommentar


        • #5
          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.

          Kommentar


          • #6
            Hmm spontan keine Idee...
            Mach mal zu testzwecken ein
            Code:
            <?php
            echo $sql;
            und für den query nicht aus
            "My software never has bugs, it just develops random features."
            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

            Kommentar


            • #7
              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.

              Kommentar


              • #8
                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...
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  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...
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar

                  Lädt...
                  X