Webspace Provider unterstützt autocommit() nicht

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

  • Webspace Provider unterstützt autocommit() nicht

    Hallo Leute,
    ich habe auf meine rechner einen apache Server, MYSQL 4.0 und PHP5 installiert. Ich wollt einen kleinen Webshop bauen was mir auch gelungen ist. Ich muss aber dazu sage dass ich mir das Wissen über PHP und MYSQL aus den Büchern erlernt habe und noch absoluter Anfänger in Sachen PHP und MYSQL bin. Den webshop habe ich aus einem Buch übernommen und dementsprechen angepasst. Ich habe ein Webspace bei strato und die datenbank habe ich über phpmyadmin exportiert.
    Das problem was ich habe, ist dass die Funktion autocommit() nicht unterstützt wird und ich die Daten aus der Datenbank nicht auslesen kann.
    Hier ein Beispiel für die Datenbank Verbindung
    PHP-Code:
    <?php

    function db_connect()
      {
         
    $result mysql_connect('host''user''pwd''DB');
          if (!
    $result)
             return 
    FALSE;
         
    $result->autocommit(TRUE);
          return 
    $result;
      } 

    function 
    db_result_to_array($result)
      {
         
    $res_array = array();

          for (
    $count 0$row $result->fetch_assoc(); $count++)
            
    $res_array[$count] = $row;

        return 
    $res_array;
      } 

    ?>
    Als Fehlermeldung bekomme ich:
    Fatal error: Call to a member function autocommit() on a non-object in...

    Wie kann ich das Problem lösen ohne dass ich den kompletten shop nochmal schreiben muss.

    Vielen Dank im Vorraus

    daac

  • #2
    mysql_connect gibt in der tat kein objekt zurück. kommentiere die zeile doch einfach mal aus.

    wie bist du denn auf die idee gekommen, dass es ein objekt mit einer methode "autocommit" liefert?

    Kommentar


    • #3
      mit apache auf meinem PC hat das alles soweit geklappt, nur auf dem webspace funktioniert das nicht. und wie gesagt bin absoluter anfänger was es sowas anbelangt.
      was meinst du mit auskommmenteren, kannst du mir ein beischpiel schreiben?
      hier ist meine index datei wo die fehlermeldung kommt, vieleicht kannst du damit was anfangen.
      PHP-Code:
      <?php
      include ('tee_sc_fns.php'); 

      session_start();
      echo 
      '<table width="700" border="0" cellspacing="0" bgcolor="#e5e5e5" align="center">
               <tr>
                 <td>
                   <table>
                     <tr>
                       <td>'
      ;
      do_html_header();
      echo 
      '</td>
              </tr>
              <tr>
                <td>'
      ;
      echo 
      '<p>&nbsp;&nbsp;Bitte wählen Sie eine Kategorie:</p>';
      echo 
      '</td>
              </tr>
              <tr>
                <td>'

      // Kategorien aus der DB auslesen
      $cat_array get_categories(); 
      echo 
      '</td>
              </tr>
              <tr>
                <td>'
      ;
      // als Links zu den Kategorienseiten anzeigen
      display_categories($cat_array); 
      echo 
      '</td>
              </tr>
              <tr>
                <td>'
      ;

      do_html_footer();
      echo 
      '</td>
              </tr>
                </table>'
      ;
      ?>
      die funktionen get_categories() und display categories() liegen in der funktionsbiblietheken teefns.php bzw. otpfns.php
      PHP-Code:
      function get_categories()
      {
            
      $conn db_connect();
            
      $query 'select catid, catname
                   from categories'
      ;
            
      $result = @$conn->query($query);
              if (!
      $result)
                return 
      FALSE;
            
      $num_cats = @$result->num_rows;
              if (
      $num_cats == 0)
                return 
      FALSE;
            
      $result db_result_to_array($result);
              return 
      $result;

      PHP-Code:
      function display_categories($cat_array)
      {
          if (!
      is_array($cat_array)) {
              echo 
      'Zur Zeit sind keine Kategorien vorhanden<br />';
              return;
          }
          echo 
      '<ul>';
          foreach (
      $cat_array as $row) {
              
      $url 'show_cat.php?catid=' . ($row['catid']);
              
      $title $row['catname'];
              echo 
      '<img src="images/logok3.gif">';
              
      do_html_url($url$title);
              echo 
      '</li>';
          }
          echo 
      '</ul>';
          echo 
      '<table width="100%" height="30" align="center" bgcolor="#e5e5e5">
                  <tr>
                    <td align="center"><img src="images/baelle.gif">
                    </td>
                  </tr>
                </table>'
      ;

      wenn du mir einfach schreibst wo und was ich ändern muss, wäre ich dir sehr dankbar

      Kommentar


      • #4
        Re: Webspace Provider unterstützt autocommit() nicht

        Du sollst aus
        PHP-Code:
        function db_connect()
          {
             
        $result mysql_connect('host''user''pwd''DB');
              if (!
        $result)
                 return 
        FALSE;
             
        $result->autocommit(TRUE);
              return 
        $result;
          } 
        folgendes machen
        PHP-Code:
        function db_connect()
          {
             
        $result mysql_connect('host''user''pwd''DB');
              if (!
        $result)
                 return 
        FALSE;
             
        // $result->autocommit(TRUE);
              
        return $result;
          } 
        Auf deinem Heimserver wird es autocommit() auch nicht geben. Wirst du nur nicht bemerkt haben, weil Fehlermeldungen bei dir nicht auf dem Bildschirm, sondern im Errorlog erscheinen.

        Kommentar


        • #5
          das hatte ich schon gehabt, aber dann heist es "Zur Zeit sind keine Kategorien vorhanden" aus der function display_categories($cat_array).
          kann es sein dass die daten aus der datenban nicht ausgelesen werden? bei strato kann ich die datensätze in der datenbank aber sehen.

          Kommentar


          • #6
            es kann alles sein, nur wird es nicht mit dieser zeile zusammenhängen, sondern mit irgend einem fehler irgendwo anders.

            Kommentar


            • #7
              vielen dank für deine schnelle hilfe. jetzt bin ich wenigstens ein schritt weiter und weis dass es nicht am autocommit() liegt.
              werde weiter suchen, vieleich komme ich zum fehler.
              danke nochmal

              Kommentar


              • #8
                trotzdem bleibt meine neugier unbefriedigt - wie kamst du auf die idee mit autocommit()?

                Kommentar


                • #9
                  Re: Webspace Provider unterstützt autocommit() nicht

                  @penizillin: Ich glaube ich weiß es.
                  Original geschrieben von daac
                  Den webshop habe ich aus einem Buch übernommen und dementsprechen angepasst.

                  Kommentar


                  • #10
                    da ch mit tech. suport von strato telefoniert habe und die mir gesagt haben das die funktion autocommit() nicht unterstützt wird, dachte ich dass es daran liegt. ich bin davon ausgegangen, da es bei mir mit apache läuft, kann es nur am autocommit() liegen. aber der fehler ist wo anders.
                    das schlimme dabei ist, ich finde ihn nicht. und es bleibt immer noch die frage, warum läuft das bei mir und auf dem webspace nicht?

                    Kommentar


                    • #11
                      ch muss aber noch dazusagen, die meldung bekomme ich nur wenn ich in der funktion get_categories() die zeile $result = @$conn->query($query); in $result = @mysql_query($conn, $query); ändere. sonst steht da nur bitte wehlen sie eine kategorie (siehe index). muss ich alle meine funktionen umändern?

                      Kommentar


                      • #12
                        Ne penizillin wollte wohl eigentlich wissen, woher du eine Funktion autocommit() überhaupt kennst. Aus dem Buch?

                        Zur Fehlersuche: Lass dir die gefunden Kategorien mal ausgeben.
                        Etwa so:
                        PHP-Code:
                        var_dump($cat_array); 
                        Da kommt false, oder? Denn in der Funktion get_categories() steht u.a.
                        PHP-Code:
                        $result = @$conn->query($query); 
                        .

                        Ich schlage vor, du stellst das Buch ins Regal zurück und liest mal auf http://php.net/mysql

                        Kommentar


                        • #13
                          autocommit() habe ich aus dem buch, das ist richtig.
                          ja da kommt false, was müsste in der Funktion get_categories() stehn anstatt
                          PHP-Code:
                          $result = @$conn->query($query); 
                          ? kannst du mich aufklären?

                          Kommentar


                          • #14
                            Dort sollte mysql_query() verwendet werden. Wie man das macht steht auf http://php.net/mysql_query.

                            Kommentar


                            • #15
                              ich habe die Function get_categories()
                              PHP-Code:
                              function get_categories()
                              {
                                    
                              $conn db_connect();
                                    
                              $query 'select catid, catname
                                           from categories'
                              ;
                                    
                              $result = @$conn->query($query);
                                      if (!
                              $result)
                                        return 
                              FALSE;
                                    
                              $num_cats = @$result->num_rows;
                                      if (
                              $num_cats == 0)
                                        return 
                              FALSE;
                                    
                              $result db_result_to_array($result);
                                      return 
                              $result;

                              wie folgt geändert
                              PHP-Code:
                              function get_categories()
                              {
                                  
                              // Liste der Kategorien aus der DB holen
                                    
                              $conn db_connect();
                                    
                                    
                              $result mysql_query("select catid, catname
                                           from categories"
                              $conn);
                                      if (!
                              $result)
                                        return 
                              FALSE;
                                    
                              $num_cats mysql_num_rows($result);
                                      if (
                              $num_cats == 0)
                                        return 
                              FALSE;
                                    
                              $result db_result_to_array($result);
                                      return 
                              $result;

                              es funktioniert aber trotz dem nicht.
                              ist das überhaupt richtig wie ich es gemacht habe?

                              Kommentar

                              Lädt...
                              X