hasii: SQL/PHP Fehlermeldung

Hallo,

würde mich freuen, wenn mir jemand bei einer Fehlermeldung weiterhelfen könnte.
Ich habe auf dem Server meines Providers (greensta) unter htttdocs die zwei php Datein:

  • dbconnect.php (Quellcode unterhalb)
    und
  • test.php (Quellcode unterhalb)
    angelegt.

Über phpmyadmin habe ich die Datenbank "garten" angelegt.
In dieser befindet sich die Tabelle "link".

Bei Eingabe von "http://laufrad-manufaktur.de/test.php" im Firefox-Browser-Feld erfolgt die Fehlermeldung:
Access denied for user 'csocc_testi'@'%' to database 'csoccodato_garten.link'

Leider komme ich hier alleine nicht weiter!
Quellcode:

:::db_conncect.php:::
<html>
<body>
<?php
mysqli_connect("localhost", "csocc_testi", "xxx", "csoccodato_garten");
if(!$db)
{
exit("Verbindungsfehlerle: ".mysqli_connect_error());
}
?>
</body>
</html>

:::test.php:::
<?php
include("dbconnect.php");
?>
<html>
<body>
testle
</body>
</html>

  1. Hallo Hasii,

    Bei Eingabe von "http://laufrad-manufaktur.de/test.php" im Firefox-Browser-Feld erfolgt die Fehlermeldung:
    Access denied for user 'csocc_testi'@'%' to database 'csoccodato_garten.link'

    Das sieht für mich so aus, als ob der Nutzer keine Rechte zum Zugriff auf die Datenbank hat. In phpMyAdmin (welche Version verwendest du übrigens?) gibt es (bei mir in der oberen Menüleiste) einen Punkt "Rechte", über den du das einstellen können solltest. Ich gehe mal davon aus, dass der dritte Parameter von mysqli_connect() von dir anonymisiert wurde und hier im Original das korrekte Passwort steht ;-)

    Noch zwei Tipps:

    1. du kannst hier im Forum Quellcode extra auszeichnen, so dass er übersichtlicher dargestellt wird. Ich habe mal deine beiden Schnippsel "aufgehübscht"

    :::db_conncect.php:::

      
    
    > <html>  
    > <body>  
    > <?php  
    > mysqli_connect("localhost", "csocc_testi", "xxx", "csoccodato_garten");  
    > if(!$db)  
    > {  
    > exit("Verbindungsfehlerle: ".mysqli_connect_error());  
    > }  
    > ?>  
    > </body>  
    > </html>  
    >   
    
    

    :::test.php:::

      
    
    > <?php  
    > include("dbconnect.php");  
    > ?>  
    > <html>  
    > <body>  
    > testle  
    > </body>  
    > </html>	  
    
    
    1. In der Datei db_connect.php darf kein "HTML-code" mehr stehen. Das führt sonst nachher zu einer invaliden Datei. Im Moment ist die Datei auch nicht valide, weil du im Fehlerfall sofort das script abbrichst. Bei mir im Browser kommt also nur folgendes an:
      
    <html>  
    <body>  
      
      
    Verbindungsfehlerle: Access denied for user 'csocc_testi'@'%' to database 'csoccodato_garten.link'  
    
    

    das abschliessende

      
    </body>  
    </html>  
    
    

    fehlt. Viele Grüße und viel Erfolg bei der weiteren Fehlersuhe

    mbr

    1. :::db_conncect.php:::

      <html>
      <body>
      <?php
      mysqli_connect("localhost", "csocc_testi", "xxx", "csoccodato_garten");
      if(!$db)
      {
      exit("Verbindungsfehlerle: ".mysqli_connect_error());
      }
      ?>
      </body>
      </html>

        
      Deine Fehlerabfrage bringt so nichts. Die Variable $db wird nirgends gesetzt. Entweder du setzt sie:  
      ~~~php
        
      $db = mysqli_connect("localhost", "csocc_testi", "xxx", "csoccodato_garten");  
      
      

      oder änderst die Abfrage:

        
      if (!mysqli_connect("localhost", "csocc_testi", "xxx", "csoccodato_garten")) {  
        ...  
      }  
      
      
      1. Tach!

        oder änderst die Abfrage:

        if (!mysqli_connect("localhost", "csocc_testi", "xxx", "csoccodato_garten")) {
          ...
        }

          
        Diese Form wäre aber nicht sonderlich sinnvoll. Man braucht den Rückgabewert von mysqli\_connect(), um nachfolgende Funktionen (zum Beispiel mysqli\_query()) aufzurufen. Bei den alten mysql(ohne i)-Funktionen wurde der Link-Identifier der zuletzt geöffneten Verbindung intern abgelegt und immer dann genommen, wenn kein Link-Identifier angegeben wurde. Das gibt es bei mysqli nicht mehr. Der Link-Identifier ist Pflicht und in der Regel der erste und nicht mehr der letzte Parameter.  
          
        Übrigens, das PHP-Handbuch hat zu jeder Funktion Anwendungsbeispiele.  
          
          
        dedlfix.
        
      2. Zunächst mal vielen Dank an Euch 3!

        Hier die Lösung von meine wirklich extrem netten Provider.
        Mach jetzt mal Werbung: greensta.de! Herr T. B. - super!

        "der Zugriff auf Ihre Datenbank muss ohne die Angabe der Tabelle erfolgen.
        Das ".link" ist daher zu viel. Zusätzlich fragen Sie in Ihrem PHP Script nach der Variablen
        $db, diese gibt es aber nicht, weswegen das Skript abbricht.
        Wir haben die dbconnect.php Datei angepasst."

        NEU:

        <html>  
        <body>  
        <?php  
        mysqli_connect("localhost", "csocc_testi", "xxx", "csoccodato_garten") or die ('verbindung fehlgeschlagen: ' . mysqli_connect_error());  
        //if(!$db)  
        //{  
        //  exit("Verbindungsfehlerle: ".mysqli_connect_error());  
        //}  
        ?>  
        </body>  
        </html>
        

        100 Punkte an Count Zero!

        Nochmals vielen Dank an Alle!!!
        P.S. hat mich als Anfänger Freitag, Samstag und Sonntag gekostet ;-)
             Aber der Weg ist das Ziel...sagt man glaube ich so :-)

        1. "der Zugriff auf Ihre Datenbank muss ohne die Angabe der Tabelle erfolgen.
          Das ".link" ist daher zu viel.

          In keinem Codeteil, den du gepostet hast, wird eine Verbindung zu der Tabelle .link erzeugt.
          Lässt mich vermuten, dass du den falschen Code gepostet hast und daher Hilfe völlig unmöglich war.

          Und noch 2 Dinge:

          1. Wegen einer nicht existierenden Variable bricht kein Script ab, das wirft maximal ne Notice, ausser man behandelt alles als Fatal, was nur in speziellen Ausnahmefällen SInn macht und bei dir ziemlich sicher nicht zutrifft.. Diese Aussage ist also falsch von deinem Provider.
          2. die() ist wohl die schlechteste Fehlerabfangmethode, die überhaupt möglich ist.

          Kann sein, dass dir geholfen wurde, aber diese Lösung ist unschön und sollte nicht verwendet werden. Ob da deine Werbung in diesem Forum als Positiv zu sehen ist, bezweifel ich ernsthaft ;)