MySQL: Bestimmen Sie, welche Datenbank ausgewählt ist?


242

Gibt es mysql_select_dbnach dem Aufruf zum Abrufen einer Datenbank eine Möglichkeit, den Namen der aktuell ausgewählten Datenbank später auszugeben? Dies scheint sehr einfach zu sein, aber ich konnte auf php.net oder stackoverflow nichts finden (alle Ergebnisse beziehen sich auf "keine Datenbank ausgewählt").

Antworten:


354

Verwenden Sie einfach mysql_query (oder mysqli_query, noch besser, oder verwenden Sie PDO, am besten von allem) mit:

SELECT DATABASE() FROM DUAL;

Nachtrag:

Es wird viel darüber diskutiert, ob FROM DUALdies einbezogen werden soll oder nicht. Auf technischer Ebene handelt es sich um ein Überbleibsel von Oracle, das sicher entfernt werden kann. Wenn Sie geneigt sind, können Sie stattdessen Folgendes verwenden:

SELECT DATABASE();

Das heißt, es ist vielleicht wichtig zu beachten, dass es FROM DUALzwar nichts tut , aber eine gültige MySQL-Syntax ist. Aus einer strengen Perspektive macht das Einfügen von geschweiften Klammern in eine einzelne Zeile, die in JavaScript bedingt ist, ebenfalls nichts , aber es ist immer noch eine gültige Praxis.


9
DUAL ist eine Oracle-Tabelle, die in MySQL übernommen wurde. Es ist eine Dummy-Tabelle für Operationen, für die keine tatsächliche Tabelle erforderlich ist. en.wikipedia.org/wiki/DUAL_table
Jan Thomä

11
@DigitalPrecision Es ist ein Überbleibsel der Tatsache, dass ich viel mit Oracle gearbeitet habe. Oracle hat nicht zulassen , zu wählen , es sei denn es ist von etwas, so dass es eine spezielle Tabelle „DUAL“ genannt ist , die in ihm nur eine Zelle hat. Sie können es weglassen.
Cwallenpoole

1
Wahrscheinlich sollte dies so bearbeitet werden, dass die vorhandene Antwort für die Nachwelt erhalten bleibt, aber SELECT DATABASE();als "tatsächliche" Antwort hinzugefügt wird .
Benutzer

@ JanThomä, damit ich eine Abfrage für die DUAL-Tabelle durchführen kann?
Pardeep Jain

1
@PardeepJain, das außerhalb meines Fachgebiets liegt, vielleicht kann cwallenpoole das beantworten.
Jan Thomä

92
SELECT DATABASE();

ps Ich wollte mir nicht erlauben, die Antwort von @ cwallenpoole zu ändern, um die Tatsache widerzuspiegeln, dass dies eine MySQL-Frage und keine Oracle-Frage ist und nicht benötigt wird DUAL .


5
Alte Gewohnheiten sind schwer abzulegen. Ich denke immer noch manchmal "FROM DUAL", obwohl ich Oracle seit 2011 nicht mehr berührt habe.
cwallenpoole

5
Ja. Ich denke immer noch an DUAL , obwohl ich Oracle seit 2011 nicht mehr berührt habe.
Cwallenpoole

9
Das bin ich wieder ... Ich denke immer noch daran.
Cwallenpoole

2
@cwallenpoole denkst du immer noch darüber nach?
Farhan.K

4
@cwallenpoole wie wäre es jetzt?
Nordle

47

Sie können jederzeit den Befehl STATUS verwenden, um die aktuelle Datenbank und den aktuellen Benutzer kennenzulernen

Geben Sie hier die Bildbeschreibung ein


Obwohl dies in der obigen Ausgabe nicht berücksichtigt ist, wird auf meinem System auch der TCP-Port angezeigt, was für mich praktisch ist, da ich mysqld_multi ausführe und mich gerne daran erinnere, mit welcher Instanz ich spreche.
Jeff

9

In den Kommentaren von http://www.php.net/manual/de/function.mysql-db-name.php habe ich diesen von ericpp% bigfoot.com gefunden:

Wenn Sie nur den aktuellen Datenbanknamen benötigen, können Sie den Befehl SELECT DATABASE () von MySQL verwenden:

<?php
function mysql_current_db() {
    $r = mysql_query("SELECT DATABASE()") or die(mysql_error());
    return mysql_result($r,0);
}
?>

1
Weil das OP eine PHP-Funktion "mysql_select_db" verwendet und nach PHP fragt. Hast du die Frage tatsächlich gelesen?
Jan Thomä

1
Danke, ja, ich hatte ursprünglich nach einer PHP-spezifischen Antwort gefragt, falls es eine Methode wie mysql_current_dboder so gab. Jemand hat es bearbeitet, um "php" aus dem Titel und den Tags zu entfernen
andrewtweber

3
@mysql_result(mysql_query("SELECT DATABASE();"),0)

Wenn keine Datenbank ausgewählt ist oder keine Verbindung besteht, wird NULLandernfalls der Name der ausgewählten Datenbank zurückgegeben.


2

Etwas abseits des Themas (mit der CLI anstelle von PHP), aber dennoch wissenswert: Sie können die Eingabeaufforderung so einstellen, dass die Standarddatenbank angezeigt wird, indem Sie eine der folgenden Methoden verwenden

mysql --prompt='\d> '
export MYSQL_PS1='\d> '

oder einmal drinnen

prompt \d>\_
\R \d>\_

1

SELECT DATABASE() arbeitete in PHPMyAdmin.


3
Dies ist mehr oder weniger nur eine Wiederholung der vorhandenen Antworten.
Pang

1
kann ein gültiger Kommentar zu jeder gültigen Antwort sein :)
Pardeep Jain

1

Eine andere Möglichkeit, die Datenbank nach einem bestimmten Wort zu filtern.

SHOW DATABASES WHERE `Database` LIKE '<yourDatabasePrefixHere>%'
or
SHOW DATABASES LIKE '<yourDatabasePrefixHere>%';

Beispiel:

SHOW DATABASES WHERE `Database` LIKE 'foobar%'
foobar_animal
foobar_humans_gender
foobar_objects
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.