SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 18.10.2006, 16:59:28
Dulla Dulla ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 11
Konstante richtig maskieren aber wie?

Hallo,

Ich habe in einer Konstante DB_NAME definiert wie meine Datenbank heisst, nämlich testdb.

Wie kann ich nun auf den Inhalt der Konstanten zugreifen bei folgenden Argumenten:

Code Zeile 6: <p align=\"center\">$row->Tables_in_testdb</p>
Code Zeile 17: $result = mysql_query("SHOW COLUMNS FROM $row->Tables_in_testdb");

Ich hab schon alles Mögliche ausprobiert aber nichts will funktionieren!
z.B.: $row->Tables_in_".DB_NAME."

Der gesamte Code sieht so aus:
PHP-Code:
$tables mysql_query("SHOW TABLES FROM ".DB_NAME.""$SQLconn);
while(
$row mysql_fetch_object($tables))
{
    echo(
"<div align=\"center\">

    <p align=\"center\">$row->Tables_in_testdb</p>
    <table width=\"800\" style=\"border-collapse: collapse\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\">
        <tr bgcolor=\"#8B93A3\">
            <td width=\"100\">&nbsp;Feld</td>
            <td width=\"100\">&nbsp;Typ</td>
            <td width=\"100\">&nbsp;Null</td>
            <td width=\"100\">Indizes</td>
            <td width=\"100\">Standard</td>
            <td width=\"100\">Extra</td>
        </tr>"
);

    
$result mysql_query("SHOW COLUMNS FROM $row->Tables_in_testdb");
    while(
$row mysql_fetch_object($result))
    {
       if(
ereg(('set|enum'), $row->Type)){
           eval(
ereg_replace('set|enum''$'.$row->Field.' = array'$row->Type).';');
       }
       echo(
"<tr>
            <td width=\"100\">$row->Field</td>
            <td width=\"100\">$row->Type</td>
            <td width=\"100\">$row->Null</td>
            <td width=\"100\">$row->Key</td>
            <td width=\"100\">$row->Default</td>
            <td width=\"100\">$row->Extra</td>
        </tr>"
);

    }
    
mysql_free_result($result);

    echo(
"</table>
    </div>"
);

}
mysql_free_result($tables); 
Vielen Dank im Voraus!
Mit Zitat antworten
  #2  
Alt 18.10.2006, 18:57:26
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Konstante richtig maskieren aber wie?

Mit einer for-Schleife und mysql_result() kannst du sie auslesen.
PHP-Code:
for($i=0$i<mysql_num_rows($tables); $i++) { print mysql_result($tables'tables'); } 
Warum verwendest du nicht mysql_list_tables() und mysql_tablename() ?
__________________
Grüße Andes
Mit Zitat antworten
  #3  
Alt 18.10.2006, 19:49:29
Dulla Dulla ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 11
AW: Konstante richtig maskieren aber wie?

Danke für deine Bemühungen, aber du hast mein Problem nicht verstanden.
Die Funktion läuft einwandfrei und vorallem sehr schnell.

<kleiner Exkurs>
mysql_list_tables() und mysql_tablename() sind php-funktionen die zwar wunderbar funktionieren aber bei großen datenbanken und vielen zugriffen nicht mehr so schnell sind.

SHOW TABLES FROM XXXX und SHOW COLUMNS FROM XXXX sind dagegen MySQL Funktionen die viel schneller Ergebnisse liefern als die PHP Funktionen
</kleiner Exkurs>


Ok ich versuche mein Problem nochmal genauer zu beschreiben.

Ich habe eine php-Konstante DB_NAME definiert mit dem Inhalt testdb,
nämlich so define('DB_NAME', "testdb");

Wenn ich nun auf diese Konstante zugreifen will z.b.
echo("DB_NAME");
dann gibt mir php auch testdb aus

Aber wenn ich nun folgendes Aufrufe funktioniert es nicht:

$row->Tables_in_".DB_NAME."

es sollte folgendes im Skript verwenden:

$row->Tables_in_testdb

Deswegen ist meine Frage wie ich DB_NAME richtig maskiere damit der php Interpreter den Pointer richtig aufrufen kann.

Hab schon Folgende Sachen ausprobiert:

$row->Tables_in_".DB_NAME."
$row->Tables_in_".DB_NAME
$row->Tables_in_."DB_NAME
"$row->Tables_in_".DB_NAME
...

Meine Frage ist einfach wie maskiere ich DB_NAME richtig?
Mit Zitat antworten
  #4  
Alt 18.10.2006, 22:02:13
Andes Andes ist offline
Member
 
Registriert seit: Jun 2006
Ort: Bayern
Alter: 56
Beiträge: 930
AW: Konstante richtig maskieren aber wie?

Mal davon abgesehen, dass bei meinem obigen Beitrag mysql_result() etwas falsch definiert ist, hab ich dich sehr wohl verstanden. Warum muss es ausgerechnet mysql_fetch_object() sein?

PHP-Code:
for($i=0$i<mysql_num_rows($sql); $i++)
{
    print 
mysql_result($sql$i'Tables_in_'.KONSTANTE).'\n';
}

oder

while($row mysql_fetch_array($sql))
{
 print 
$row['Tables_in_'.KONSTANTE].'\n';

Ich habe keinen Zeitlichen unterschied bei beiden zu der Variante mit mysql_fetch_object() feststellen können.
Beide ergaben eine Ausführungszeit von 0,009 sek. Die Abgefragte Datenbank enthält 194 Tabellen. mysql_fetch_object() lieferte in derselben Zeit das Ergebnis.
Übrigens kann ich deinen "kleiner Exkurs" nicht ganz nachvollziehen. Abfragen mit mysql_list_tables() war auch nicht langsamer.

Ach so, wegen dem Maskieren. Ich denke, dass dies nicht gehen wird.
__________________
Grüße Andes

Geändert von Andes (18.10.2006 um 22:13:00 Uhr)
Mit Zitat antworten
  #5  
Alt 19.10.2006, 03:57:06
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Konstante richtig maskieren aber wie?

Zitat:
Zitat von Dulla Beitrag anzeigen
Meine Frage ist einfach wie maskiere ich DB_NAME richtig?
1. PHP parst keine Konstanten in Strings sondern nur Variable.
2. warum quälst Du Dich und PHP mit Objekten?
3. $row->Tables_in_".DB_NAME." <-- das sind Codeschlampereien

PHP-Code:
$tables mysql_query("SHOW TABLES FROM " DB_NAME$SQLconn);
while(
$row mysql_fetch_assoc($tables))
{
...

    
$result mysql_query("SHOW COLUMNS FROM ".$row['Tables_in_' testdb]); 
Mit Zitat antworten
  #6  
Alt 19.10.2006, 11:34:58
Dulla Dulla ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 11
AW: Konstante richtig maskieren aber wie?

Zitat:
Zitat von meikel Beitrag anzeigen
1. PHP parst keine Konstanten in Strings sondern nur Variable.
Ah ok, das wusste ich bis jetzt nicht! Wo steht denn sowas?
Zitat:
2. warum quälst Du Dich und PHP mit Objekten?
Tja dass ist allerdings eine gute Frage. Wahrscheinlich hab ich mir gedacht im Hinblick auf PHP 5 sollte ich mich mal mit Objekten auseinandersetzen ;)
Zitat:
3. $row->Tables_in_".DB_NAME." <-- das sind Codeschlampereien
*räusper* Da hast du allerdings sehr Recht!

Auf jeden Fall vielen, vielen Dank an euch beide!
Mit Zitat antworten
  #7  
Alt 19.10.2006, 18:54:45
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Konstante richtig maskieren aber wie?

Zitat:
Zitat von Dulla Beitrag anzeigen
Ah ok, das wusste ich bis jetzt nicht! Wo steht denn sowas?
http://www.php.net/manual/de/languag...string.parsing
Mit Zitat antworten
  #8  
Alt 19.10.2006, 19:54:20
Dulla Dulla ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 11
AW: Konstante richtig maskieren aber wie?

Danke nochmal!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ist das richtig ? selbstlerner MySQLi/PDO/(MySQL) 2 18.05.2006 13:03:40
Newsletter: Double-Opt-In und Double-Opt-Out - wie richtig? c4 Off Topic Area 0 03.08.2004 08:27:35
session_encode in DB gespeichert - Daten richtig, auslesen aber falsch CThuy PHP für Fortgeschrittene und Experten 0 25.07.2004 00:38:34
Link nicht richtig bei Suchmaschinen Script Mutated! PHP für Fortgeschrittene und Experten 12 19.07.2004 19:49:11
HTML Mails richtig darstellen Wichu PHP Grundlagen 0 14.01.2004 16:24:27


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:15:54 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt