Welche Variable liefert Datenbank-Namen

  • Ich bastle gerade an einem Plugin bzw. an einer Modifikation. Frage hierzu:

    Wie heißt die wp-Variable, die mir den Namen der verwendeten Datenbak im Klartext liefert? Da ich einen sql-Query auf die gesamte Datenbank machen muss, brauche ich den Namen als Variable. Steh' total auf dem Schlauch. Vielleicht auch auf meiner Leitung...

    Dummheit ist die einzig internationale Sprache

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ich hab gerade das hier gefunden:

    Code
    $result = mysql_list_tables(DB_NAME);


    Das gibt dir alle Tabellennamen. Demnach müsste "DB_NAME" eine Konstante mit dem - Überraschung! - DB-Namen sein.

    Sid

  • Das dachte ich auch. Mein Query heißt:

    $sql = "SHOW TABLE STATUS FROM " . $????;

    Wenn ich hier DB_NAME, $DB_NAME oder weiß ich was einsetze geht der Query schief. Schreibe ich

    $sql = "SHOW TABLE STATUS FROM tatsächlicher_name";

    klappt alles hervorragend. Ich krieg die Krise. Das muss doch möglich sein. Die Tables haben alle Variablennamen. Die stehen in der wp-settings.php

    Dummheit ist die einzig internationale Sprache

  • ich glaub, dass es da ein problem gibt mit sql und php, so dass sql versucht, eine table mit dem Variablennamen zu finden. (also "$irgendwas")

    viell. kplatts, wenn du das ganze per echo einbindest (uh, ich glaub, das ist illegal und nicht wirklich elegant, aber meine php-kenntnisse sind nicht grade die besten und in letzter zeit etwas eingerostet)

  • Oh, ich IDIOT.
    Konstanten werden in PHP anders behandelt als Variablen. Kein $ und so Zeugs.

    $sql = "SHOW TABLE STATUS FROM " . DB_NAME; // ohne $

    Mann, bin ich blöd. Danke für den Fingerzeig.

    Dummheit ist die einzig internationale Sprache

  • Du brauchst für deine Query dann die einzelnen Tabellennamen, nicht den DB-Namen. Die Standard-Tabellen stehen in $wpdb (zB $wpdb->postmeta), aber wenn du wirklich alle Tabellen abgreifen willst (also auch die, die per Plugin dazugekommen sind), musst du in etwa folgendes machen:

    Code
    $result = mysql_list_tables(DB_NAME);
        $tables = array();
    
    
        while ($row = mysql_fetch_row($result)) { $tables[] = $row[0]; };


    Dann hast du in $tables ein Array mit allen Tabellennamen. Danach kannst du dann deine Query machen:

    Code
    foreach($tables as $table){
    $wpdb->query('blah '.$table);
    };

    Sid

  • Mir ging's um bestimmte Werte. Und die liefert der Query SHOW TABLE STATUS FROM. Ich brauche nicht die Tabellen im Einzelnen, sondern nur bestimmte Werte ALLER Tabellen in Summe. Das geht per Array aus obigem Query und anschließendem Auslesen per FOR i = ... dieser Werte. Und dieser Query braucht halt den Datenbanknamen und jetzt funzt es...

    Danke und schönen Nachmittag (bei 33 Grad!)

    Dummheit ist die einzig internationale Sprache

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!