kostenloser Webspace werbefrei: lima-city


Bekomme keine Verbindung via PHP zum MySQL Server hin

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Das ist der Code....
    <?php
    $tabelle = "alliances";
    
    $con = mysql_connect("mysql.lima-city.de","USERxxxxxx","Mein Passwort");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    $com = "SELECT * FROM '" + $tabelle + "'";
    mysql_select_db("db_xxxxxx_1", $con);
    $tableexists = mysql_query($com, $con);
    
    if($tableexists)
    {
       echo "Tabelle existiert.";
    }
    else
    {
       echo "Tabelle existiert nicht.";
    }
    ?>


    ....und das ist mein Problem. =)
    Tabelle existiert nicht.


    Ich möchte durch diesen Code prüfen, ob eine bestimmte Tabelle in der Datenbank vorhanden ist.
    Obwohl sie das auch ist, schreibt er mir ständig das Gegenteil....ich vermute den Fehler irgendwo im MySQL-String oder in der Art, wie ich mich verbinden will, aber ich hab wirklich nicht genug Praxiserfahrung, um dahinter zu kommen.

    Ich hab natürlich auch Google bemüht....dadurch hab ich erreicht, dass er mir überhaupt mal etwas ausgiebt. =)

    Könnte mir bitte jemand Feedback zum Code geben?

    Beitrag zuletzt geändert: 7.10.2010 19:38:59 von adelwoehrer
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Sieh mal hier:

    http://forums.mysql.com/read.php?101,112346,112346
  4. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Hab den Code unter diesem Link mal umgesetzt:
    <?php
    $tablename = "alliances";
    
    $con = mysql_connect("mysql.lima-city.de","USERxxxxxx","Mein Passwort");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    $com = "SELECT table_name FROM information_schema.tables WHERE table_schema = 'db_xxxxxx_1' AND table_name = '" + $tablename + "'";
    $tableexists = mysql_query($com, $con);
    if($tableexists)
    {
       echo "Tabelle existiert.";
    }
    else
    {
       echo "Tabelle existiert nicht.";
    }
    ?>


    Als Ergebnis wird mir jetzt noch immer "Tabelle existiert nicht" geliefert, das Skript hängt sich beim "mysql_query" auf.
    Daten sind richtig und die Tabelle existiert definitiv....es muss also noch irgendwo ein kleiner Fehler in der Abfrage sein.
  5. Was zur Hölle ist table_schema? Ist das ein existierendes Tabellenfeld?
  6. In PHP werden Strings und Variablen nicht mit + verbunden, wie zB in Javascript, sondern mit einem Punkt. Dein ersten Code ist im Primzip richtig, nur müsste er lauten
    <?php
    $tabelle = "alliances";
    
    $con = mysql_connect("mysql.lima-city.de","USERxxxxxx","Mein Passwort");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    $com = "SELECT * FROM '".$tabelle."'";
    mysql_select_db("db_xxxxxx_1", $con);
    $tableexists = mysql_query($com, $con);
    
    if($tableexists)
    {
       echo "Tabelle existiert.";
    }
    else
    {
       echo "Tabelle existiert nicht.";
    }
    ?>

    Du solltest außerdem noch definieren, was mit den zurückkommenden Daten passieren soll. mysql_fetch_array() oder sowas...
  7. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Naja, eigentlich soll mit den zurückgekommenen Daten gar nichts passieren.
    Das dient ausschließlich zum prüfen, ob die Tabelle existiert.

    Habe deinen Code ausprobiert....leider mit dem selben Ergebnis.
    Tabelle existiert nicht.

    Wenn das mit dem überprüfen nicht klappt, hätte ich mal ne Frage.
    Wenn man eine neue Tabelle erstellt, die den gleichen Namen einer bereits existierenden aufweißt, wird die existierende dann überschrieben oder liefert mir MySQL einen Error?

    Beitrag zuletzt geändert: 8.10.2010 11:32:17 von adelwoehrer
  8. Ich weiß nicht ob du einen Error bekommst, aber zumindest ein Warning wie "Can't create Table" sollte ausgegeben werden.
    Damit es auch angezeigt wird, solltest du allerdings ERROR_REPORTING(E_ALL); vor dein Script setzen.

    Du kannst auch versuchen
    if($tableexists==FALSE)
    {
       echo "Tabelle existiert nicht.";
    }
    else
    {
       echo "Tabelle existiert.";
    }

    zu verwenden, denn mysql_query liefert entweder eine Ressource zurück, oder FALSE im Fehlerfall. Ich könnte mir vorstellen, dass du immer "Tabelle existiert nicht" bekommst, da du nicht weiter definierst, was $tableexists sein sein.

    Beitrag zuletzt geändert: 8.10.2010 11:41:48 von tct
  9. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Es geht mir im Prinzip darum, dass ich vor dem Erstellen oder Beschreiben einer Tabelle erst mal prüfen möchte, ob diese überhaupt existiert.
    Da es sich bei den Daten, die eingefügt werden, eigentlich nur um Updates der aktuellen Daten handelt, ist es egal, wenn ich auch einfach "nicht" prüfe, und alles Vorhandene überschreibe.

    Da die Methode mit dem vorherigen Prüfen allerdings die elegantere wäre, wär´s mir schon lieber, wenn sich bezgl. der Abfrage eine Lösung finden lässt.
    Aber so gesagt, die Daten einfach "brutal" zu überschreiben, wäre mir auch recht.

    kannst auch versuchen
    if($tableexists==FALSE)
    {
       echo "Tabelle existiert nicht.";
    }
    else
    {
       echo "Tabelle existiert.";
    }

    zu verwenden, denn mysql_query liefert entweder eine Ressource zurück, oder FALSE im Fehlerfall. Ich könnte mir vorstellen, dass du immer "Tabelle existiert nicht" bekommst, da du nicht weiter definierst, was $tableexists sein sein.

    Das ist egal....wenn kein Wert (false oder true) gesetzt wird, geht er automatisch von true aus.
    Ich hab´s trotzdem mal probiert....selbes Ergebnis.

    Beitrag zuletzt geändert: 8.10.2010 12:19:57 von adelwoehrer
  10. Wenn du ein Update machst und die Tabelle existiert nicht, liefert mysql_query() FALSE zurück, es sollte ein Warnung ausgegeben werden und mit mysql_error() kannst du den Fehler auslesen, der entstanden ist und das FALSE zurück geliefert hat.


    Vielleicht existiert die Tabelle ja wirklich nicht ;)
    Mit
    $tables=mysql_fetch_array (mysql_list_tables ($com));
    
    if(in_array($tabelle,$tables)
    {
    echo "Tabelle existiert.";
    }
    else
    {
       echo "Tabelle existiert nicht.";
    }

    Liest du einfach alle Tabellen deiner Datenbank aus und überprüfst sie anschließend auf die gewünschte Tabelle.

    Beitrag zuletzt geändert: 8.10.2010 11:57:47 von tct
  11. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Wenn du ein Update machst und die Tabelle existiert nicht, liefert mysql_query() FALSE zurück, es sollte ein Warnung ausgegeben werden und mit mysql_error() kannst du den Fehler auslesen, der entstanden ist und das FALSE zurück geliefert hat.

    Das hier liefert mir der SQL-Error, den ich in die else-Abfrage eingefügt hab, wenn ich den obigen Code ausführe:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''alliances'' at line 1


    Beitrag zuletzt geändert: 8.10.2010 12:05:29 von adelwoehrer
  12. :wall: Manchmal ist man einfach blind...
    Die Tabelle, aus der gelesen werden soll wird entweder ganz ohne Anführungszeichen geschrieben oder mit `.
    Sollte also ganz einfach funktionieren mit
    "SELECT * FROM ".$tabelle;

    oder mit
    "SELECT * FROM `".$tabelle."`";
  13. Autor dieses Themas

    adelwoehrer

    Kostenloser Webspace von adelwoehrer

    adelwoehrer hat kostenlosen Webspace.

    Tabelle existiert.

    :megarofl::megarofl::megarofl::prost:
    Vielen Dank!

    Nochmal den ganzen Code zum nachlesen, falls mal jemand danach suchen sollte:
    <?php
    $tablename = "alliances";
    
    $con = mysql_connect("mysql.lima-city.de","USERxxxxxx","Mein Passwort");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    $com = "SELECT * FROM $tablename";
    mysql_select_db("db_xxxxxx_1", $con);
    $tableexists = mysql_query($com, $con);
    
    if($tableexists == true)
    {
       echo "Tabelle existiert.";
    }
    else
    {
       echo mysql_error();
    }
    ?>


    Beitrag zuletzt geändert: 8.10.2010 12:10:13 von adelwoehrer
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!