MySQL-Fehler ohne Funktionsstörung

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

  • MySQL-Fehler ohne Funktionsstörung

    Hallo Profies,

    ich habe ein 'tellafriend'-Script' der einige Angaben
    in meiner Datenbank mit loggt.

    Nun möchte ich gerne statt der HauptURL, das der User die Möglichkeit
    hat eine andere URL ein zu geben und diese dann mit dem Script an einen Freund schickt.

    Jedoch klappt das irgendwie mit folgender Funktion nicht :
    PHP-Code:

    var $linkId 0;
    var 
    $queryId 0;
    var 
    $record = array();
    var 
    $row;

      function 
    nextRecord(){
    50 )      $this->record  mysql_fetch_array$this->queryId );
                
    $this->row     += 1;
                
    $this->errNo   mysql_errno(); 
                
    $this->errText mysql_error();
          
                
    $status is_array$this->record );
                if( !
    $status ){
    57 )         mysql_free_result$this->queryId );
                
    $this->queryId 0;
                }
          return 
    $status;
       } 
    Ich bekommen folgende Fehlermeldung :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 50

    Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 57

    ausgegeben, wenn ich jedoch die Fehlermedlung mit '@' unterdrücke
    funktioniert alles bestens, der Eintrag in der DB und auch das versenden der Mail ( auch ohne '@', jedoch dann halt mit einer Fehlermeldung )

    Leider kenne ich mich mit den Fehlermeldungen von MySQL nicht besonders aus und hoffe auf eine Erklärung um diese Meldung zu verstehen - D A N K !

    Gruss Manuela

  • #2
    Poste doch mal bitte Deine SQL-Anweisung. Vor allem mal bitte Zeile 50 und 57 aus der in der Fehlermeldung angegebene Datei.
    Zuletzt geändert von ; 22.10.2003, 19:53.

    Kommentar


    • #3
      Danke für die schnelle Antwort.

      Das Script besteht eigentlich aus zwei Hauptteilen :

      tellafriend.php

      PHP-Code:
              <TABLE cellpadding="10" align="left" valign="top" width="600" BORDER="0">
                  <TR>
                      <TD align="left" colspan="2" valign="top">
                      &nbsp;<BR>
                          <span class="simonsittext">
                          <B><? echo $ueberschrift; ?></B>
                          <BR><BR>
      <?
          if( $REQUEST_METHOD =="POST" ){
          
              if ($sname == "")
                  $errors .= $error_sname;
              
              if ($semail == "")
                  $errors .= $error_semail1;
              else if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$", $semail))
                  $errors .= $error_semail2;
              
              if ($rname == "")
                  $errors .= $error_rname;
                  
              if ($remail == "")
                  $errors .= $error_remail1;
              else if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$", $semail))
                  $errors .= $error_remail2;
          
              if ($errors == "") {
              
                  if ($site == '')
                      $tellafriendseite = $standardseite;
                  else    
                      $tellafriendseite = $site;
                  
                  require ("simonsit_includes/tellafriend_email.inc.php");
                  
                  if ($emailabsender=='')
                      $emailabsender = $semail;
                  
                  //echo $tellafriendmailtext;
                  
                  $m = new Mail();
                  $m->From( $emailabsender );
                  $m->To( "$remail" );
                  $m->Subject( "$tellafriendsubject" );
                  $m->Body( "$tellafriendmailtext" );
                  $m->Priority(1);
                    $m->Send();         
                  
                  //Anzahl in der DB loggen
                  if ($dblogging) {
                      $site = strtolower(trim($tellafriendseite));
                      
                      $db = new simonsdb();
                      $query = "SELECT * from $tellafriendtable where url='$tellafriendseite'";
                         $db->query( $query );
                         
                         if( $db->numRows() !=1 ) {
                             $query = "INSERT INTO $tellafriendtable (id, url, counter) VALUES ('', '$tellafriendseite', '0')";
                             $db->query( $query );
                         }
                         
                         $query = "SELECT counter from $tellafriendtable where url='$tellafriendseite'";
                         $db->nextRecord();
                         
                         //counter hochzaehlen
                          $counter = $db->f("counter");
                          $counter++; 
                          
                          $query = "UPDATE $tellafriendtable SET counter='$counter' WHERE url='$tellafriendseite'";
                          $db->query( $query );
                  }
                  
                  $site = "";
                  $tellafriendmailtext = "";
                  
                  echo "<CENTER>";
                  echo $text_versendebestaetigung;
                  echo "</span></CENTER></TD></TR></TABLE>";
              } else {
                  // wenn noch Fehler
                      echo $text_einleitung; 
      ?>
                          <BR>&nbsp;
                          </span>
                      </TD>
                  </TR>
                  <form action="<?echo $PHP_SELF;?>" method="post">
                  <TR>
                      <TD align="left" valign="top">
                      <span class="simonsittext">
                          <? echo $text_sname; ?><BR>
                          <input type="text" maxlength=255 name="sname" class="simonsitinputfield" style="width:200px;" value="<? echo $sname;?>">
                          <BR><BR>
                          <? echo $text_semail; ?><BR>
                          <input type="text" maxlength=255 name="semail" class="simonsitinputfield" style="width:200px;" value="<? echo $semail;?>">
                      </span>
                      </TD>
                      <TD align="left" valign="top">
                      <span class="simonsittext">
                          <? echo $text_rname; ?><BR>
                          <input type="text" maxlength=255 name="rname" class="simonsitinputfield" style="width:200px;" value="<? echo $rname;?>">
                          <BR><BR>
                          <? echo $text_remail; ?><BR>
                          <input type="text" maxlength=255 name="remail" class="simonsitinputfield" style="width:200px;" value="<? echo $remail;?>">
                      </span>
                      </TD>
                      <TD align="left" valign="top">
                      <span class="simonsittext">
                           <? echo $text_site;?><BR>
                          <input type="text" maxlength=255 name="site" class="simonsitinputfield" style="width:200px;" value="<? echo $seite;?>">
                      </span>
                      </TD>
                  </TR>
                  <TR>
                      <TD align="left" colspan="2" valign="top">
                      <span class="simonsittext">
                          <? echo $text_stext; ?><BR>
                          <textarea cols=82 rows=8 name="stext" class="simonsitinputfield"><? echo $stext;?></textarea>
                          <BR><BR>
                           <input type="submit" value="<? echo $text_button; ?>" class="simonsitinputbutton">
                          <BR><BR>
                          <font color="red"><B><? echo $errors;?></B></font>
                      </span>
                      </TD>
                  </TR>
                  </form>
                  <TR>
                      <TD align="right" colspan="2" valign="top">
                          <a href="http://www.simons-it.de" title="Entwicklung Tell-A-Friend &copy Simons-IT" target="_blank">&copy Simons-IT</a>
                      </TD>
                  </TR>
                  </TABLE>
      <?
              }
          } else {
          // wenn nicht-Post
               echo $text_einleitung; ?>
                          <BR>&nbsp;
                          </span>
                      </TD>
                  </TR>
                  <form action="<?echo $PHP_SELF;?>" method="post">
                  <TR>
                      <TD align="left" valign="top">
                      <span class="simonsittext">
                          <? echo $text_sname; ?><BR>
                          <input type="text" maxlength=255 name="sname" class="simonsitinputfield" style="width:200px;" value="<? echo $sname;?>">
                          <BR><BR>
                          <? echo $text_semail; ?><BR>
                          <input type="text" maxlength=255 name="semail" class="simonsitinputfield" style="width:200px;" value="<? echo $semail;?>">
                      </span>
                      </TD>
                      <TD align="left" valign="top">
                      <span class="simonsittext">
                          <? echo $text_rname; ?><BR>
                          <input type="text" maxlength=255 name="rname" class="simonsitinputfield" style="width:200px;" value="<? echo $rname;?>">
                          <BR><BR>
                          <? echo $text_remail; ?><BR>
                          <input type="text" maxlength=255 name="remail" class="simonsitinputfield" style="width:200px;" value="<? echo $remail;?>">
                      </span>

                      </TD>
                  </TR>
                  <TR>
                      <TD align="left" valign="top">
                      <span class="simonsittext">
                           <? echo $text_site; ?><BR>
                          <input type="text" maxlength=255 name="site" class="simonsitinputfield" style="width:200px;" value="<? echo $seite;?>">
                      </span>
                      </TD>
                  </TR>
                  <TR>
                      <TD align="left" colspan="2" valign="top">
                      <span class="simonsittext">
                          <? echo $text_stext; ?><BR>
                          <textarea cols=82 rows=8 name="stext" class="simonsitinputfield"><? echo $stext;?></textarea>
                          <BR><BR>
                           <input type="submit" value="<? echo $text_button; ?>" class="simonsitinputbutton">
                          <BR><BR>
                          <font color="red"><B><? echo $errors;?></B></font>
                      </span>
                      </TD>
                  </TR>
                  </form>
      ..... ?>
      und

      mysqlcb.class

      PHP-Code:
      <?php 
      class MySqlDB{
         var 
      $DBHost "";
         var 
      $DBName "";
         var 
      $DBUser "";
         var 
      $DBPassword "";
         
         var 
      $linkId 0;
         var 
      $queryId 0;
         var 
      $record = array();
         var 
      $row;
         
         var 
      $errNo 0;
         var 
      $errText "";
       
         function 
      error$message ){
            
      printf"</td></tr></table>Database ERROR:</b> %s</br>\n"$message );
            
      printf"MySQL ERROR:</b>: %s (%s)</br>\n"$this->errNo$this->errText );
            die( 
      "terminated");
         }    
         
         function 
      connect(){
            if( 
      == $this->linkId ){
               
      $this->linkId mysql_connect$this->DBHost$this->DBUser$this->DBPassword );
               if( !
      $this->linkId ){
                  
      $this->error"cannot connect to DB" );
               }
               if( !
      mysql_querysprintf"use %s"$this->DBName ), $this->linkId ) ){
                  
      $this->error"cannot use db ".$this->DBName );
               }         
            }
         }
         
         function 
      query$queryString ){
            
      $this->connect();
            
      //printf( "DEBUG: QueryString %s </br>\n", $queryString );
            
            
      $this->queryId mysql_query$queryString$this->linkId );
            
      $this->row     0;
            
      $this->errNo   mysql_errno(); 
            
      $this->errText mysql_error();
            if( !
      $this->queryId ){
               
      $this->error"Invalid SQL query: ".$queryString );
            }
            
            return 
      $this->queryId;
         }

         function 
      nextRecord(){
            
      $this->record  mysql_fetch_array$this->queryId );
            
      $this->row     += 1;
            
      $this->errNo   mysql_errno(); 
            
      $this->errText mysql_error();
            
            
      $status is_array$this->record );
            if( !
      $status ){
               
      mysql_free_result$this->queryId );
               
      $this->queryId 0;
            }
            return 
      $status;
         }
         
         function 
      seek$position ){
            
      $status mysql_data_seek$this->queryId$position );
            if(  
      $status )
               
      $this->row $position;
            return;
         } 

         function 
      numRows(){
            return 
      mysql_num_rows$this->queryId );
         }
         
         function 
      numFields(){
            return 
      mysql_num_fields$this->queryId );
         }
         
         function 
      f$name ){
            return 
      $this->record[$name];
         }
         
         function 
      p$name ){
            print 
      $this->record[$name];
         }

         function 
      affectedRows(){
            return 
      mysql_affected_rows$this->linkId );
         }
         
         function 
      listFields$dbName$tableName ){
            
      $this->connect();
            return 
      mysql_list_fields$dbName$tableName$this->linkId );
         }
      }
      ?>
      Die Zeilen die, die den Fehler verursachen habe ich im ersten Post
      schon mit 50) & 57) markiert.

      Gruss und Danke Manuela
      Zuletzt geändert von manuelakersten; 22.10.2003, 21:20.

      Kommentar


      • #4
        hättest ja wenigstens die php-tags nehmen können, wenn du schon alles postest oder?

        mach vor zeile 57 mal
        PHP-Code:
        echo '<hr />';
        echo 
        mysql_error();
        echo 
        '<br />'.mysql_affected_rows($db>queryId);
        echo 
        '<br />'.mysql_num_rows($db>queryId);
        echo 
        '<hr />'
        kann es sein, dass du kein select machst? dann kannst du nämlich auch keinen datensatz holen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Ohhhh, sorry habe [code] gepostet,
          bin es von meinem Forum so gewohnt **grins**.

          Nun folgende Fehlermeldungen

          Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 50
          --------------------------------------------------------------------------------
          Warning: mysql_affected_rows(): supplied argument is not a valid MySQL-Link resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 59

          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 60
          --------------------------------------------------------------------------------
          Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 63

          Zeile 50)
          PHP-Code:
                $this->record  mysql_fetch_array$this->queryId ); 
          Zeile 59)
          PHP-Code:
                echo '<br />'.mysql_affected_rows($db>queryId); 
          Zeile 60)
          PHP-Code:
                echo '<br />'.mysql_num_rows($db>queryId); 
          Zeile 63)
          PHP-Code:
                mysql_free_result$this->queryId ); 
          Danke und Gruss Manuela

          Kommentar


          • #6
            Du bist doch eigentlich schon wat länger am start. wat sacht dir mysql_error()

            Kommentar


            • #7
              zu TobiasZ :

              Na normalerweise gibt 'mysql_error();' mir
              eine ausführlichere Fehlrmeldung aus ! Oder ?

              zu mrhappiness :

              Zur Zeit ist es so, dass die URLS die zum Weiterempfehlen
              eingegeben werden in der DB geloggt und dann gezählt werden,
              damit ich weis welche Seiten am interessantesten sind.

              Ich habe Select-Anweisungen im Script um die URL die geloggt
              wurden aus zu lesen und dann einen Zähler höher zu setzen.

              Das Auslesen des Ergebnisses ist in einem seperaten Script
              vorhanden.

              Gruss und Danke Manuela

              Kommentar


              • #8
                Na normalerweise gibt 'mysql_error();' mir eine ausführlichere Fehlrmeldung aus ! Oder ?
                das war eigentlich gemeint, dass du das mal machst!

                Kommentar


                • #9
                  Habe ich ja gemacht, jedoch vor die zweite Fehlermeldung
                  wie 'mrhappiness' es mir gesagt hatte.

                  Nun kommt das merkwürdige, wenn ich es vor die Zeile 50 setze
                  also vor der Zeile die die erste Fehlermeldung ausgibt,
                  gibt es keine Fehlermeldung mehr ??????

                  Gruss Manuela

                  Kommentar


                  • #10
                    also hast du das jetzt nach ->query(). da gehörts auch eigentlich hin. das hat aber keinen einfluss auf die fehlermeldungen. also klappts jetzt?

                    Kommentar


                    • #11
                      Ich habe es jetzt so eingesetzt :
                      PHP-Code:
                         function nextRecord(){
                            
                      $this->record  mysql_fetch_array$this->queryId );
                      echo 
                      mysql_error();
                            
                      $this->row     += 1;
                            
                      $this->errNo   mysql_errno(); 
                            
                      $this->errText mysql_error();
                            
                            
                      $status is_array$this->record );
                            if( !
                      $status ){


                                 
                      mysql_free_result$this->queryId );
                      echo 
                      mysql_error();
                               
                      $this->queryId 0;
                            }
                            return 
                      $status;
                         } 
                      und bekomme die selbe Fehlermeldung :

                      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 50

                      Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/www/web62/html/tellafriend/simonsit_includes/mysqldb.class on line 60

                      Zeile 50 & 60 ist jedesmal vor mysql_eror() .

                      Wenn ich jedoch bei der Seite mit der Fehlermeldung ein Reload im Browser mache und es dann die Meldung kommt, das die Daten nochmal gesendet werden sonst kan die Seite nicht aktualisiert werden kommt keine Fehlermeldung mehr - KOMISCH !

                      Gruss Manuela

                      Kommentar


                      • #12
                        mach mysqlerror direkt nach query(); das muss dir was zurück geben

                        Kommentar


                        • #13
                          entweder bin ich zu blöd, habe jetzt mysql_error(); auch in der PHP-Abfrage eingegeben :
                          PHP-Code:
                                  if ($dblogging) {
                                          
                          $site strtolower(trim($tellafriendseite));
                                          
                                          
                          $db = new simonsdb();
                                          
                          $query "SELECT * from $tellafriendtable where url='$tellafriendseite'";
                                             
                          $db->query$query );
                                          echo 
                          mysql_error();
                                             
                                             if( 
                          $db->numRows() !=) {
                                                 
                          $query "INSERT INTO $tellafriendtable (id, url, counter) VALUES ('', '$tellafriendseite', '0')";
                                                 
                          $db->query$query );
                                              echo 
                          mysql_error();
                                             }
                                             
                                             
                          $query "SELECT counter from $tellafriendtable where url='$tellafriendseite'";
                                         ---------> 
                          $db->nextRecord(); <----------------- 
                                             echo 
                          mysql_error();
                                 
                                             
                          //counter hochzaehlen
                                              
                          $counter $db->f("counter");
                                              
                          $counter++; 
                                              
                                              
                          $query "UPDATE $tellafriendtable SET counter='$counter' WHERE url='$tellafriendseite'";
                                              
                          $db->query$query );
                                          echo 
                          mysql_error();
                                      } 
                          mehr query(), habe ich nicht und es kommt trotzdem nichts anderes raus !

                          Die Zeile die Probleme macht habe ich mal mit Pfeilen markiert !

                          Wenn die URL die gleiche ist, also schon vorhanden dann gibt es keine
                          Fehlermeldung also wirklich nur mit der Markierten Zeile, wenn eine neu
                          Zeile eingefügt wird, aber geschrieben wird sie trotzdem !

                          Gruss Manuela

                          Kommentar


                          • #14
                            O.k. ich schreibe das Script um und mache die
                            Countanweisung im Abfrage-Script.

                            Nun doch noch eine Frage, ich schäme mich dafür
                            aber ich habe noch nie eine Datenbank programmiert
                            nun wann schreibe ich 'varchar(255)' und 'text' .

                            ich möchte

                            zwei Namen
                            zwei eMail
                            eine Beschreibung
                            und eine URL

                            unter bekommen, die Programmierung habe ich
                            fertig konnte aber leider nicht zu den obigen Angaben finden
                            auch nicht unter http://www.mysql.com/doc/de/CREATE_TABLE.html
                            da steht nur das es diese verschiedenen Arten gibt.

                            Danke und Gruss Manuela

                            Kommentar


                            • #15
                              änder in meinem letzten beitrag das $db>queryId in $this->queryID und probier's nochmal
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X