sql-statements in der schleife

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

  • sql-statements in der schleife

    hi

    ich erstelle über eine whileschleife einige sql-statements.
    wie schaffe ich es nun das ich die wieder auslesen kann?
    zurzeit sieht es so aus:

    $sql = ...;
    $result = mysql_query($sql, $conn);

    bei jeder schleife wird halt das result wieder überschrieben.

    kann man so irgendwie in der art lösen??:
    PHP-Code:
    while(...) 

    $i++ 
    .. 
    $sql = ...; 
    $result "_" $i mysql_query($sql$conn);
    ... 

    oder geht das eher auf array basis?:

    PHP-Code:
    while(...) 

    $i++ 
    .. 
    $sql = ...; 
    $result[$i] = mysql_query($sql$conn);
    ... 

    lg daniel
    Zuletzt geändert von cheeby; 20.01.2003, 09:24.
    Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

  • #2
    wenn du die results außerhalb der schleife verwenden willst, wäre das array besser, dann würde ich aber auch die dazugehörige sql-abfrage in das array reinschreiben
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      also jetzt versteh ich nur noch bahnhof.
      kannst mir das ein bisschen erklären?
      Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

      Kommentar


      • #4
        du haslt folgenden code
        PHP-Code:
        while (irgendne bedingung)
        {
          
        $i++;
          
        $sql="select * from table1 where id=$i"//doofes statement, ich weiß
          
        $result=mysql_query($sql);

        wo verwendest du jetzt $result?
        auch in dieser schleife?
        außerhalb der schleife?

        wenn du's innerhalb der schleife verwendest, dann brauchst du ja gar nix ändern (daher denk ich mal, du verwendest es außerhalb der schleife )

        außerhalb der schleife:
        PHP-Code:
        $result=array();
        while (
        irgendne bedingung)
        {
          
        $i++;
          
        $sql="select * from table1 where id=$i"//doofes statement, ich weiß
          
        $result["$sql"]=mysql_query($sql);
        }
        //Ausgabe
        echo "<table><tr><th>Abfrage</th><th>resource identifier</th></tr>";
        foreach (
        $result as $key => $value)
          echo 
        "<tr><td>$key</td><td>$value</td></tr>";
        echo 
        "</table>"
        btw: So bekommst du natürlich nur den resource identifier zurück,den du für mysql_fetch_array-aufrufe verwenden solltest.
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          also ich verwende es außerhalb der schleife.

          hier mal die schleife:

          PHP-Code:
          $search "test"
          $i 0
          while (
          $row mysql_fetch_row($result))  
          {  
              
          $tabs $row[0];  
              
          $sql "describe $tabs";  
              
          $result1 mysql_query($sql$conn);   
              while (
          $row mysql_fetch_row($result1))  
              {    
                  if (
          $row[1] == "text")   
                  {    
                      if (
          $sql_query)    
                      {     
                          
          $sql_query .= "or ";    
                      }    
                      
          $sql_query .= $row[0] . " like '%$search%' ";     
                  }
              }  
              if (
          $sql_query)  
              {       
                  
          $i++;   
                  
          $sql_query_fertig "select * from " $tabs " where " $sql_query "<br><br>";    
                  
          $result2$i] = mysql_query($sql_query_fertig$conn);  
              }    
              
          #querys wieder entleeren  
              
          $sql_query "";  
              
          $sql_query_fertig ""

          wie les ich jetzt die results extern aus?
          Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

          Kommentar


          • #6
            und jemand ne lösung?

            ich hab keinen plan wie ich das ausgeben soll.
            Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

            Kommentar


            • #7
              Hi DU,

              bin mir nicht sicher, ob ich es richtig verstanden habe, aber Du versuchtst doch den Datentyp der einzelnen Spalten auszulesen, um auf ihnen eine Suche durchzuführen ???

              Schreib mal kurz, was Du damit bezwecken willst.
              Denn wenn man den Hintergrund kennt, kann man eher was dazu sagen.

              Grüße, Ultra.

              Kommentar


              • #8
                Original geschrieben von Ultra
                Hi DU,

                bin mir nicht sicher, ob ich es richtig verstanden habe, aber Du versuchtst doch den Datentyp der einzelnen Spalten auszulesen, um auf ihnen eine Suche durchzuführen ???
                Ja ich lese zuerst die gesamten tabellen einer datenbank aus, und dann die jeweiligen spalten bei denen der datentyp zutrifft.
                Soweit funktioniert das ganze.
                Aus diesen Informationen baue ich mir dann ein sql-statement mit dem ich die jeweilige tabelle und die spalten darin einer volltextsuche unterziehe.
                Also es geht drum das ich egal wieweit die datenbank erweitert wird, das suchscript so lassen kann.

                nur mein problem ist das ich mit der whileschleife das $result2 immer überschreibe und es irgendwie nicht auslesen kann.
                wenn mir jetzt noch wer sagt wie das funkt bin ich verdammt glücklich.
                (muss sagen bin noch halber noob)

                Original geschrieben von Ultra

                Schreib mal kurz, was Du damit bezwecken willst.
                Denn wenn man den Hintergrund kennt, kann man eher was dazu sagen.

                Grüße, Ultra.
                Also zusammengefasst ist der zweck der alle spalten des typen text einer volltextsuche zu unterziehen. Und die jeweiligen datenbankstrukturinfos auszulesen( also ich kann das script für jede beliebige datenbank hernehmen). ausgegeben sollten alle datensätze werden die das gesuchte wort enthalten.
                Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

                Kommentar


                • #9
                  PHP-Code:
                  // $result2 hier initialisieren, da es sonst nach der Schleife out of scope kommt !
                  $result2=array();

                  $search "test"
                  // unnötig
                  //$i = 0; 
                  while ($row mysql_fetch_row($result))  
                  {  
                      
                  // sql_query initialisieren, sonst gibs bei "$sql_query.= ..." ne Warnung !
                      
                  $sql_query="";
                      
                  $tabs $row[0];  
                      
                  $sql "describe $tabs";  
                      
                  $result1 mysql_query($sql$conn);   
                      while (
                  $row mysql_fetch_row($result1))  
                      {    
                          if (
                  $row[1] == "text")   
                          {                
                              if (
                  $sql_query)    
                              {     
                                  
                  $sql_query .= "or ";    
                              }    
                              
                  $sql_query .= $row[0] . " like '%$search%' ";    
                          }
                      }  
                      if (
                  $sql_query)  
                      {       
                          
                  //$i++;   unnötig
                          
                  $sql_query_fertig "select * from " $tabs " where " $sql_query "<br><br>";    
                          
                  // hier fehlte ein [ vor $i 
                          // $i ist unnötig
                          
                  $result2[] .= mysql_query($sql_query_fertig$conn);  
                      }    
                      
                  #querys wieder entleeren  
                      // wird oben initialisiert
                      // $sql_query = "";  
                      
                  $sql_query_fertig ""

                  oder kurz
                  PHP-Code:
                  $result2=array();
                  $search "test"
                  while(
                  $row1 mysql_fetch_row($result)) {  
                      
                  $sql "describe ".$row1[0];  
                      
                  $result1 mysql_query($sql$conn);   
                      
                  $sql_query="";
                      while (
                  $row2 mysql_fetch_row($result1))  
                          
                  $sql_query.=$row2[1]=="text"?(($sql_query?" or ":"").$row2[0] . " like '%$search%' "):""
                      if(
                  $sql_query)  
                          
                  $result2[] .= mysql_query("select * from ".$row1[0]." where ".$sql_query$conn);  

                  TBT

                  Die zwei wichtigsten Regeln für eine berufliche Karriere:
                  1. Verrate niemals alles was du weißt!


                  PHP 2 AllPatrizier II Browsergame

                  Kommentar


                  • #10
                    Original geschrieben von TBT
                    PHP-Code:

                     
                    while ($row2 mysql_fetch_row($result1))  
                      
                    $sql_query.=$row2[1]=="text"?(($sql_query?" or ":"").$row2[0] . " like '%$search%' "):""
                    also das is mir persönlich zu hoch, kannst mir den teil bitte kurz erklären?

                    daniel
                    Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

                    Kommentar


                    • #11
                      PHP-Code:
                      $a $b $c $d;
                      // ist die Kurzschreibweise für
                      if( $b )
                        
                      $a $c;
                      else
                        
                      $a $d;

                      $a .= $b;
                      //ist kurz für
                      $a $a $b

                      also:
                      PHP-Code:
                      while ($row mysql_fetch_row($result1)) {    
                          if (
                      $row[1] == "text"){                
                              if (
                      $sql_query){     
                                  
                      $sql_query .= "or ";    
                              }    
                              
                      $sql_query .= $row[0] . " like '%$search%' ";    
                          }
                      }

                      // wird zu
                      while ($row mysql_fetch_row($result1)) {    
                          if (
                      $row[1] == "text"){                
                              
                      //if ($sql_query){     
                              //    $sql_query .= "or ";    
                              //}
                              
                      $sql_query .= $sql_query " or " "";    
                              
                      $sql_query .= $row[0] . " like '%$search%' ";    
                          }
                      }
                      // wird zu
                      while ($row mysql_fetch_row($result1)) {    
                          if (
                      $row[1] == "text"){                
                              
                      //$sql_query .= $sql_query ? " or " : "";    
                              //$sql_query .= $row[0] . " like '%$search%' ";    
                              
                      $sql_query .= ($sql_query " or " "").$row[0] . " like '%$search%' ";
                          }
                      }
                      // wird zu
                      while ($row mysql_fetch_row($result1)) {    
                          
                      //if ($row[1] == "text"){                
                          //    $sql_query .= ($sql_query ? " or " : "").$row[0] . " like '%$search%' ";
                          //}
                          
                      $sql_query .= $row[1] == "text" ? (($sql_query " or " "").$row[0] . " like '%$search%' "):"";
                      }
                      // fertig 
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        danke also es funktioniert jetzt soweit das ich durch diese abfrage im html:

                        PHP-Code:
                        <?
                          foreach($result2 as $ausgabe)
                          {
                        ?>  
                        <tr>
                        <td></td>
                        <td></td>
                        <td>
                        <? echo $ausgabe ?>
                        </td>
                        <td></td>
                        <td></td>
                        </tr>
                        <?
                        }
                        ?>
                        dann das bekomme -->

                        Resource id #5
                        Resource id #6
                        Resource id #7
                        ...

                        was mach ich da jetzt falsch?? muss dazu sagen das ich bis jetzt sehr selten mit arrays konfrontiert war.
                        Seien wir realistisch, versuchen wir das unmögliche. - Chè Guavara

                        Kommentar


                        • #13
                          da sind mysql Ergebnisse drin, also wenn dann

                          PHP-Code:
                          for($i=0;$i<count($result2);++$i){
                            while(
                          $row=mysql_fetch_array($result2[$i])){
                            {  
                              
                          // hier deine Ausgabe mit $row
                            
                          }

                          und nach getaner Arbeit alle mysql ressourcen wieder freigeben !
                          TBT

                          Die zwei wichtigsten Regeln für eine berufliche Karriere:
                          1. Verrate niemals alles was du weißt!


                          PHP 2 AllPatrizier II Browsergame

                          Kommentar


                          • #14
                            wenn freigeben, dann nach getaner arbeit auf ein result, nicht nach getaner arbeit an allen reults
                            PHP-Code:
                            for($i=0;$i<count($result2);++$i){
                              while(
                            $row=mysql_fetch_array($result2[$i])){
                              {  
                                
                            // hier deine Ausgabe mit $row
                              
                            }
                              
                            mysql_free_result($result2[$i]);

                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              mysql-querys innerhalb einer while-schleife sind eine ziemlich schlechte idee.
                              es erfordert jedes mal wieder eine verbindung zwischen webserver und mysql-server (query senden, ergebnis zurückgeben, query senden, ergebnis zurückgeben, query senden, ergebnis zurückgeben, ...) was auf beiden maschinen die last nach oben treibt.

                              du solltest mal drüber nachdenken, ob sich das nicht auch ressourcenschonender realisieren lässt...
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X