Tabelle aus mysql-Query auslesen

Raven280438

Erfahrenes Mitglied
Hi,

ich suche eine Möglichkeit, die entsprechende Tabelle aus einem MySQL-Query auszulesen.
z.B. "SELECT * FROM tabelle" sollte tabelle zurückgeben.

Gibts da ne Möglichkeit?


Gruß
 
Nein, nur den Tabellen-Namen.

Ich habe eine Funktion geschrieben, an die der Query übergeben wird.
In der Funktion wird der Query dann an die Datenbank geschickt und das Ergebnis zurückgegeben.
Jedoch verwende ich 2 verschiedene Datenbanken. Wenn der Query an eine bestimmte Tabelle geschickt wird soll Datenbank 2 genutzt werden, sonst Datenbank 1.

Hier die Funktion:
PHP:
function abfrage($query){
	GLOBAL $db_name1,$pfad1,$user1,$pw1;
	GLOBAL $db_name3,$pfad3,$user3,$pw3;

	if (substr_count($query," session_webmail ")) {
		$db_kas = mysql_connect($pfad3,$user3,$pw3);
		$tmp = mysql_db_query($db_name3,$query,$db_kas);
	}
	else {
		$db_kas = mysql_connect($pfad1,$user1,$pw1);
		$tmp = mysql_db_query($db_name1,$query,$db_kas);
	}

	if(!$db_kas) exit;

	if (mysql_error($db_kas)){
		debug("<b>abfrage<br>".$query."<br><br>".mysql_error($db_kas)."<br><br></b>");
		return FALSE;
	}
	return $tmp;
}
Die Funktion debug() schickt im Fehlerfall ne E-Mail an mich.

Im Moment mach ich es mit substr_count(), aber das ist Fehleranfällig, wenn " session_webmail " z.B. in einer Variable im Query-String steht wird die falsche Datenbank genutzt.
 
stimmt ja mit select * from
der stern steht für ALL
dann kannst du noch bestimmte kriterien hinzufügen wenn du möchtest, zB

SELECT * FROM tabellenname WHERE spalteninhalt = Suchfeldeingabe
 
Ihr habt das falsch verstanden, ich möchte nicht die Tabelle in der Datenbank auslesen, sondern den Tabellen-Namen aus dem Query-String.
 
Du selbst musst doch irgendwo festlegen, welches Query wo und wie ausgeführt wird. Wenn du schon mit einer Fallunterscheidung arbeitest, kannst du in dieser gleich auch die angesprochene Datenbank, über die du dann auch die angesprochene Tabelle zuordnest, festlegen:
PHP:
if ($chosendb = 1) {
    mysql_query("SELECT * FROM `tabelle1`;");
    $table = 'tabelle1';
} else {
    mysql_query("SELECT * FROM `tabelle2`;");
    $table = 'tabelle2';
}

Deine Beweggründe sind mir irgendwie schleierhaft, aber nun gut...

Eine weitere Überlegung wäre das Auslesen aller Tabellen in einer Datenbank via
SQL:
SHOW TABLES;
mittels derer du schauen kannst, ob eine gesuchte Tabelle enthalten ist - Wenn nicht, kannst du die zweite Datenbank vermuten.

Was mir gerade noch einfällt:
PHP:
preg_match('=^.*from[\s]+([\S]+).*$=uis', $querystring, $matches);
var_dump($match[1]);
 
Zuletzt bearbeitet:
Zurück