Das Jak: Wieso funktioniert der SQL-Code nur auf Localhost?

Aloha,

ich die den heutigen Tag damit verbracht SQL zu lernen und mir dafür
das Tutorial von Quakenet zur Hilfe genommen.

Ich habe alles nachgetippt und ausprobiert, was auch immer funktioniert hat, und zum Schluss habe ich mal was eigenes probiert.

Ich habe eine erfolgreich eine Tabelle erstellt mit dem Titel von Filmen und einer Note (ähnlich IMDB).

Ich habe mit XAMPP Webspace und SQL-Server simuliert und in Eclipse den Code geschrieben. Wenn ich in Eclipse sage er soll mir die Seite darstellen, funktioniert auch alles und ich bekomme eine Tabelle mit den Filmen und der Note.

Dann habe ich die Dateien auf meinen Webspace hochgeladen und ausprobiert und das Ergebnis war eine leere, weiße Seite (natürlich habe ich vorher localhost, name, pw usw. geändert). Dann fing ich vor ein paar Stunden an das Problem zu googeln, den code mehrmals umzuschreiben, mehrmaliges hochladen auf den Webspace usw. und trotzdem funktioniert es nur auf Localhost.

Die Tabelle Filmrating mit Inhalten besteht in der Webspace-Datenbank.
Die Daten (Host, Name, Passwort und Datenbankname) sind in meiner
Datei richtig geschrieben und ein "Konnte keine Verbindung zur Datenbank aufbauen." erscheint ja auch nicht.

Könnt ihr mir helfen?

<?php  
   $db = @new mysqli('xxx.1und1.de', 'xxx', 'pwundso', 'dbname');  
   //$db = @new mysqli('localhost', 'root', '', 'test');  
   if (mysqli_connect_errno()) {  
      die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');  
   }  
  
   $sql = "SELECT * FROM `filmrating`";  
   $result = $db->query($sql);  
  
   if (!$result) {  
     die ('Etwas stimmte mit dem Query nicht: '.$db->error);  
   }  
  
   echo 'Die Ergebnistabelle besitzt '.$result->num_rows." Datensätze<br />\n";  
?>  
<table border=1>  
   <tr>  
      <td>Note</td>  
      <td>Titel</td>  
   </tr>  
<?php  
   while ($row = $result->fetch_assoc()) {  // NULL ist äquivalent zu false  
   // $row ist nun das Array mit den Werten  
   echo '<tr><td> "'.$row['Note'].'" </td>  
         <td> "'.$row['Film']."\" </td></tr>";  
   }  
   $result->close();  
   unset($result); // und referenz zum objekt löschen, brauchen wir ja nicht mehr...  
?>

Danke vorab und einen schönen Abend,
Jascha

  1. Moin!

    Die Tabelle Filmrating mit Inhalten besteht in der Webspace-Datenbank.
    Die Daten (Host, Name, Passwort und Datenbankname) sind in meiner
    Datei richtig geschrieben und ein "Konnte keine Verbindung zur Datenbank aufbauen." erscheint ja auch nicht.

    Könnt ihr mir helfen?

    Ja: Nimm alle @-Zeichen aus dem Code raus, die verhindern, dass Fehler ausgegeben werden.

    Wenn beispielsweise mysqli auf deinem Webserver nicht existiert, weil noch eine veraltete PHP-Version benutzt wird, scheitert dein Skript in der ersten Zeile, ohne eine Meldung auszugeben, und ohne danach weiterlaufen zu können.

    <?php

    $db = @new mysqli('xxx.1und1.de', 'xxx', 'pwundso', 'dbname');

      
     - Sven Rautenberg
    
    1. Wenn beispielsweise mysqli auf deinem Webserver nicht existiert, weil noch eine veraltete PHP-Version benutzt wird, scheitert dein Skript in der ersten Zeile, ohne eine Meldung auszugeben, und ohne danach weiterlaufen zu können.

      Sowas Blödes. Mysqli wird tatsächlich nicht unterstützt.
      Gerade gelesen, die Alternative ist einfach mysql.
      Natürlich habe ich schnell ausprobiert, ob ich einfach nur das i am Ende wegnehmen muss. Hat, wie erwartet, nicht geklappt.

      Gibt es bei mysql einfach einen anderen Befehl für
      $db = new mysqli();
      oder muss ich mir nun ein neues Tutorial suchen?

      Danke dir erstmal für die schnelle Antwort!

      1. Hi Das!

        Gibt es bei mysql einfach einen anderen Befehl für
        $db = new mysqli();
        oder muss ich mir nun ein neues Tutorial suchen?

        Soweit ich weiß, kannst du bei 1und1 je nach Paket PHP 4 _und_ PHP 5 nutzen.
        Informationen dazu findest du im Hilfecenter.

        MfG H☼psel

        --
        "It's amazing I won. I was running against peace, prosperity, and incumbency."
        George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
        Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
        1. Hello,

          Soweit ich weiß, kannst du bei 1und1 je nach Paket PHP 4 _und_ PHP 5 nutzen.
          Informationen dazu findest du im Hilfecenter.

          Jau, wenn man nichts umkonfigurieren will, einfach die Endung *.php5 an die Files hängen anstelle von *.php

          Und dann würde ich erstmal die phpinfo() aufrufen an Jaschas Stelle

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Soweit ich weiß, kannst du bei 1und1 je nach Paket PHP 4 _und_ PHP 5 nutzen.
            Informationen dazu findest du im Hilfecenter.

            Das war ja mal sehr interessant auf der 1&1 Seite einzuloggen.
            Ich habe den Account dort schon seit 2003 und mir damals einfach
            die FTP und SQL Zugangsdaten auf einen Zettel geschrieben,
            somit brauchte ich die 1&1 Seite nicht mehr.
            Nun habe ich gesehen was für neue Pakete angeboten werden und
            das mein Paket dabei gar nicht aufgelistet war.
            Für das selbe Geld kriegt man jetzt schon einiges mehr.
            Wird Zeit zu wechseln :-)

            Jau, wenn man nichts umkonfigurieren will, einfach die Endung *.php5 an die Files hängen anstelle von *.php

            Und dann würde ich erstmal die phpinfo() aufrufen an Jaschas Stelle

            Getan und funktioniert!

            Vielen Dank euch allen für die Hilfe.
            (selten so schnelle Antworten bekommen)

            Gruß,
            Jascha Klickermann