Kieselnator: Strato - keinen Zugriff auf Datenbank über PHP

Hi!
Habe da ein Problem, mit dem ich einfach nciht weiterkomme :-(
Es geht dabei um eine Datenbank bei Strato.
Ich nutze über PHP eine andere Zugriffsmethode (ist es die alte???), nämlich noch über new mysqli(... usw... Leider wird nichts ausgegeben, und PHP gibt auch keinen Fehler preis.
Iwelche Ideen?
Gruß, Felix

PS: HEEEELPPPP!!!

  1. Es geht dabei um eine Datenbank bei Strato.

    Was sagt deren Support dazu?

    Ich nutze über PHP eine andere Zugriffsmethode (ist es die alte???), nämlich noch über new mysqli(... usw... Leider wird nichts ausgegeben, und PHP gibt auch keinen Fehler preis.

    Noch? Welche neuere Methode als die OOP-Klasse gibts denn in PHP?

  2. Hi!

    Ich nutze über PHP eine andere Zugriffsmethode (ist es die alte???), nämlich noch über new mysqli(... usw... Leider wird nichts ausgegeben, und PHP gibt auch keinen Fehler preis.

    Verrate nur nicht, was genau du machst, sonst könne jemand darin Fehler finden.

    Iwelche Ideen?

    Schau ins PHP-Handbuch, da gibt es Beispiele für den Verbindungsaufbau inklusive rudimentärer Fehlerbehandlung. Zumindest sieht man, Meldungen, wenn was schief läuft.

    Lo!

    1. Hi! Ich verbinde mich so mit der Datenbank:

      $db = new mysqli('rdbms.strato.de', 'benutzername', 'passwort', 'Db');

      Das klappt auch und viele machen es ja auch so.

      Doch dann Rücke ich mit dem Qeury an, ales scheint glat gelaufen zu sein, es gibt keinen Fehler offensichtlich, dennoch wird nichts angezeigt!?!

      1. Hi!

        Doch dann Rücke ich mit dem Qeury an, ales scheint glat gelaufen zu sein, es gibt keinen Fehler offensichtlich, dennoch wird nichts angezeigt!?!

        Man muss sich nicht auf Vermutungen verlassen. Schau dir die Handbuchseite zur Query-Funktion an. Sie gibt durch ihren Rückgabewert bekannt, ob die Aktion erfolgreich war oder nicht. Sieh ihn dir an (mit var_dump() am besten).

        Lo!

      2. Hallo,

        Hi! Ich verbinde mich so mit der Datenbank:

        $db = new mysqli('rdbms.strato.de', 'benutzername', 'passwort', 'Db');

        Das klappt auch und viele machen es ja auch so.

        Im ersten Posting bzw. im Betreff schreibst du noch dass du keinen Zugriff auf die DB bekommst und hier plötzlich dass der Zugriff funktioniert - was denn jetzt?

        Doch dann Rücke ich mit dem Qeury an, ales scheint glat gelaufen zu sein, es gibt keinen Fehler offensichtlich, dennoch wird nichts angezeigt!?!

        Code? Sagt $db->error etwas? Liefert der Query überhaupt einen Datensatz?

        Gruß,
        Tobias

        1. Hi! Ich war verzeifelt ;-) außerdem hab ich hinterher rausgefunden, dass es nciht an der DB-Connection lag... Nein Query liefert nichts...

          1. Okay edit: Ich hab jetzt mal ein bisschen getestet. Also query()->num_rows; funktioniert schonmal, da die Schleife abgearbeitet wird...

            1. weiteres edit: beim ersten query (sind zwei stück, zwei schleifen ineinander verschachtelt) werden die daten regulär abgerufen...

              1. wieder edit: es liegt jetzt nur noch an den bedingungen, schraube grade daran rum und auch bei strato hab ich einstellungen geändert...

                1. wieder edit: es liegt jetzt nur noch an den bedingungen, schraube grade daran rum und auch bei strato hab ich einstellungen geändert...

                  Sehr spannend. Auch wenn uns die Details fehlen um nachvollziehen zu koennen, was du tust. :)

                  --
                  Signaturen sind blöd!
                  1. INSERT INTO bestellungen SET vorname='".htmlspecialchars($_POST['vorname'])."', nachname='".htmlspecialchars($_POST['nachname'])."', straße='".htmlspecialchars($_POST['straße'])."', hausnummer='".htmlspecialchars($_POST['hausnummer'])."', plz='".htmlspecialchars($_POST['plz'])."', stadt='".htmlspecialchars($_POST['stadt'])."', telefon='".htmlspecialchars($_POST['telefon'])."', email='".htmlspecialchars($_POST['email'])."', anmerkungen='".htmlspecialchars($_POST['anmerkungen'])."', produkte='".htmlspecialchars($_POST['bestellteartikel'])."', bestellwert='".(((htmlspecialchars($_POST['vorkomma']).".".htmlspecialchars($_POST['nachkomma']))+1)-1)."', bezahlt='".htmlspecialchars($_POST['bezahlt'])."', bearbeitet='".htmlspecialchars($_POST['bearbeitet'])."', verschickt='".htmlspecialchars($_POST['verschickt'])."', url='".htmlspecialchars($_POST['url'])."', datum='".time()."'

                    das ist der query ;) iwelche ideen, warum er nicht funktioniert? soll ich die sachen mal auslagern?

                    1. Moin!

                      INSERT INTO bestellungen SET vorname='".htmlspecialchars($_POST['vorname'])."',

                      Zur Sache habe ich noch nichts zu sagen, aber das ist unsicher. Behandle die Daten beim Eintrag in die Datenbank mit mysql_real_escape_string()

                      htmlspecialchars() soll verhindern, dass Tags an einer Stelle auftauchen, wo diese nichts verloren haben. Benutze dies, wenn Du die Daten wieder in ein HTML-Dokument ausgibst.

                      MFFG (Mit freundlich- friedfertigem Grinsen)

                      fastix

                    2. Moin!

                      Ich habe das, der Übersicht halber, auf mehrere Zahlen verteilt und um etwas sehr sinnvolles ergänzt und um Dein Sicherheitsloch bereinigt:

                      $sql="INSERT INTO bestellungen  
                      SET vorname='".mysql_real_escape_string($_POST['vorname'])."', nachname='".mysql_real_escape_string($_POST['nachname'])."',  
                      straße='".mysql_real_escape_string($_POST['straße'])."',  
                      hausnummer='".mysql_real_escape_string($_POST['hausnummer'])."',  
                      plz='".mysql_real_escape_string($_POST['plz'])."',  
                      stadt='".mysql_real_escape_string($_POST['stadt'])."',  
                      telefon='".mysql_real_escape_string($_POST['telefon'])."',  
                      email='".mysql_real_escape_string($_POST['email'])."', anmerkungen='".mysql_real_escape_string($_POST['anmerkungen'])."',  
                      produkte='".mysql_real_escape_string($_POST['bestellteartikel'])."',  
                        
                      bestellwert='".(((mysql_real_escape_string($_POST['vorkomma'])  
                      ."."  
                      .mysql_real_escape_string($_POST['nachkomma']))+1)-1)  
                      ."',  
                      bezahlt='".mysql_real_escape_string($_POST['bezahlt'])."',  
                      bearbeitet='".mysql_real_escape_string($_POST['bearbeitet'])."',  
                      verschickt='".mysql_real_escape_string($_POST['verschickt'])."',  
                      url='".mysql_real_escape_string($_POST['url'])."',  
                      datum='".time()."'";
                      

                      das ist der query ;)

                      Nein. Das ist trotzdem nicht die Query. Die Query ist, was Du damit erzeugst. Hast Du denn schon mal ins Error-Log Deines Webservers geschaut? Ich schätze, PHP hat da was hinterlassen. Behbe das und lass Dir vor allem auch den mysql-error ausgeben:

                      if (mysql_error()) {
                          echo mysql_errno() . ": " . mysql_error() . "\n";
                      }

                      print "<pre>$sql</pre> <strong>(... Das ist Deine Query)</strong>";

                      "Perfekt" wird das alles erst, wenn die Fehler behoben sind und wenn den hier genannten mysql-Funktionen auch noch die Verbindungskennung übergeben wird.

                      MFFG (Mit freundlich- friedfertigem Grinsen)

                      fastix