• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Namen aller gespeicherten Tabellen auflisten

Hallo threadi

und jetzt sieht das bei mir so aus:
Code:
$db = $_GET["db"];
$Tabs = mysql_query("SHOW TABLES FROM $db ");
while($row = mysql_fetch_object($Tabs))
doch will da nix funktionieren. Ich erhalte nur jede Menge Fehlermeldungen. 2 in der Zeile der Abfrage und eine in der Zeile mit Beginn der Schleiffe.

Also bitte ich um weitere Hilfe.

Danke Gruß Andreas
 
Ich erhalte nur jede Menge Fehlermeldungen.
Schön, dass du uns nicht mit den Fehlermeldungen belästigst, die könnten ja sonst eventuell hilfreich sein. :(
PHP:
if (isset($_GET["db"]))
{
   $db = mysql_real_escape_string($_GET["db"]);
   
   $Tabs = mysql_query("SHOW TABLES FROM $db ")
      or die ("MySQL-Error: " . mysql_error());
      
   while($row = mysql_fetch_object($Tabs))
   {
   }
}
 
Hallo bdt600

ich erhalte für die Zeile
PHP:
$db = mysql_real_escape_string($_GET["db"]);
die Fehlermeldung:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO)
Und dies gleich zwei Mal und der mit dem GET erfasste Inhalt wird mit echo angezeigt.

Für die Zeile
PHP:
$Tabs = mysql_query("SHOW TABLES FROM $db ")
erhalte ich die Fehlermeldung:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO)
und dies auch wenn ich in der $db Zeile nur das GET schreibe. Die Fehlermeldung steht auch zwei Mal drin.

Und für die Zeile
PHP:
while($row = mysql_fetch_object($Tabs))
erhalte ich dann die Fehlermeldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource

Das eins mit dem anderen zusammenhängt ist ja klar. Aber ich erhalte ich auch die Fehlermeldungen wenn ich nur das GET in der $db Zeile schreibe.

Also bitte ich um weitere Ihlfe, wofür ich mich auch bedanken möchte.

Gruß Ändreas
 
Hallo bdt600

OK vielen Dank das wars, denn jetzt erhalte ich diese Fehlermeldungen alle nicht mehr. Aber für die Anzeige des Namens weis ich nicht was ich schreiben soll. Und bei mir steht da
PHP:
$Table = $row['Name'];
echo "<tr><td>$Table</td></tr>";
und dafür erhalte ich die Fehlermeldung:
Fatal error: Cannot use object of type stdClass as array

Also möchte ich bitte in Erfahrung bringen in welcher Spalte der Name der Tabellen steht.

Würde mich über weitere Hilfe sehr freuen.

Danke Gruß Andreas
 
Hallo

ok dann stehts jetzt soweit mal so drin:
PHP:
$verbindung=mysql_connect(ini_get("mysqli.default_host"), "root", "") or 
    die("Error: <br>".mysql_error()); 
mysql_select_db($db, $verbindung) or
    die("Error: <br>".mysql_error());
$Tabs = mysql_query("SHOW TABLES FROM $db LIKE 'Namen'");
while($row = mysql_fetch_object($Tabs))
{
$Table = $row->Namen;
echo "<tr><td>$Table</td></tr>";
}
echo "</table>";

Doch angezeigt wird nix. Es ist nix zu sehen, wenn gleich auch nix von einer Fehlermeldung. Ich dachte jetzt halt das LIKE mal in die sql Abfrage einzubauen und sollte diese Splate doch dann wieder mit row abfragen? Oder wie komme ich sonst an den Namen der Tabelle?

Danke Gruß Andreas
 
Wie kommst Du auf

PHP:
while($row = mysql_fetch_object($Tabs))

und

PHP:
$Table = $row->Namen;

? Ich hatte dich auf etwas anderes hingewiesen.

Abgesehen davon wäre

PHP:
echo "<tr><td>".$Table."</td></tr>";

sauberer für die Ausgabe.

Und wieso nutzt Du kein mysql_error() um mögliche Fehler bei der Ausführung des SQL-Statements zu erkennen?
 
Hier mal eine kleine simple Funktion, die alle SQL-Statements in ein Array liest.

PHP:
<?PHP

function dbconnect($db_host, $db_user, $db_pass, $db_name)
{
   $db_connect = @mysql_connect($db_host, $db_user, $db_pass);
   $db_select = @mysql_select_db($db_name);
   if (!$db_connect)
   {
      die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to establish connection to MySQL</b><br>".mysql_errno()." : ".mysql_error()."</div>");
   }

   elseif (!$db_select)
   {
      die("<div style='font-family:Verdana;font-size:11px;text-align:center;'><b>Unable to select MySQL database</b><br>".mysql_errno()." : ".mysql_error()."</div>");
   }
}

// query absetzen, gegebenenfalls fehlermeldung zurueckgeben
function dbquery($query)
{
   $_SESSION['query_error'] = '';

   $result = @mysql_query($query);
   if (!$result)
   {
      $_SESSION['query_error'] = "(".mysql_errno().")".mysql_error();
      return false;
   }
   else
   {
      return $result;
   }
}

function myfetch_all($sql)
{
   $result = dbquery($sql);
   if(!$result)
   {
      return false;
   }

   $x = 1;
   // array 0 ist feldname...
   for($r = 0; $r < mysql_num_fields($result); $r++)
   {
      $ergebnis[0][$r] = mysql_field_name($result,$r);
   }

   // ab arry 1 werden die daten gelesen
   while ($row = mysql_fetch_row($result))
   {
      for($a = 0; $a < mysql_num_fields($result); $a++)
      {
         $ergebnis[$x][$a] = $row[$a];
      }
      $x++;
   }
   return $ergebnis;
}


$db_host = "localhost"; // Host
$db_user = "USER"; // Datenbank-User
$db_pass = "PASSWORT"; // Passwort
$db_name = "DATENBANK"; // Datenbank Name

// Connecten
$db = dbconnect($db_host, $db_user, $db_pass, $db_name);
// SQL-Statements
$sql = 'SHOW TABLES';
// Alles in ein Array lesen. 
$tabellen = myfetch_all($sql);

echo '<pre>';
// Eventuelle SQL-Fehller stehen in $_SESSION['query_error']
print_r($_SESSION);
// Alle Werte stehen im Array
print_r($tabellen);
echo '</pre>';

Nutze ich schon schon lange und bin recht zufrieden damit.
 
Hallo

Ach mensch das Tehma ist bestimmt beendet. Aber ich bräuchte die Namen der Tabellen. Und wieso soll man die Namen abfragen können wenn es denn nur soooo kompliziert sein kann mit den Namen etwas anzufagen. Phpmyadmin liefert ja auch auch Knopfdruck alle Tabellennamen und dies in einer Tabelle. Und ehrlich gesagt brauche ich überhaupt keine Tabelle, sondern nur die Namen als Variable in einer Schliefe

Hoffe ich darf mich nochmal bedanken

GHruß Andreas
 
Was willst du noch? Du hast eine komplette Lösung bekommen, das sollte doch wohl reichen!
 
Ich hatte in Beitrag #8 auch geschrieben wie Du auf dem zuerst beschriebenen Weg auf die Namen zugreifen kannst. Wenn Du immernoch Probleme hast, zeig deinen aktuellen Quellcode damit wir erkennen könnten woran Du scheiterst.
 
Zurück
Oben