dynamisch if für mysql
mosiz
- php
Hallo,
über ein link <a href=index.php?var=tabellen_name>
übergebe ich variable (var) mit den tabellennamen.
ich lese meine SQL-Tabellen mit:
$abftrge = $abfrage = "SHOW TABLES";
$ergebnis = mysql_query( $abfrage, $dbref );
for( $i=0; $i < mysql_num_rows( $ergebnis ); $i++ ) {
print mysql_result( $ergebnis, $i );
}
aus.
durch mysql_result( $ergebnis, $i ) erhalte ich nun die namen der einzelnen tabellen. ich würde jetzt gerne wissen wie erstell ich jetzt die if abfrage zu einer vorhandenen oder nicht vorhanden tabelle auserhalb der for scheife dar?
z.B.
in dieser if müsste ich jeden tabellen_namen eintragen, verknüpft mit or oder and.
if( $var == "tabellen_name" ){
tabellen_name ist vorhanden. mach das
}else{
tabellen_name ist _nicht_ vorhanden. mach das
}
ich möchte versuchen die abfrage dynamisch zuerstellen, ich weiss nur noch nicht wie und geht das überhaupt, wenn ja wie?!
Grüße mosiz
Hallo mosiz!
<a href=index.php?var=tabellen_name>
übergebe ich variable (var) mit den tabellennamen.
Greife in deinem Script doch bitte über $_GET['var'] auf diese Variable zu.
(Lesetip: http://www.php.net/manual/en/language.variables.predefined.php)
ich lese meine SQL-Tabellen mit [...] aus.
Also, nochmal langsam:
Du willst prüfe, ob der im Link übergebene Variablenname ein gültiger Tabellenname ist?
Wenn Du die in der Datenbank vorhandenen Tabellen in einen array schreibst, dann solltest Du mit in_array() (http://php.net/in_array) prüfen können, ob die übergebene Variable einer Tabele entspricht, oder nicht.
Ich hoffe, ich habe deine Frage richtig verstanden und einigermaßen beantwortet.
MfG
Götz
Hi Götz,
Greife in deinem Script doch bitte über $_GET['var'] auf diese Variable zu.
warum nicht mit $_POST['var'] oder warum mit $_GET['var']?
Du willst prüfe, ob der im Link übergebene Variablenname ein gültiger Tabellenname ist?
exakt, genau das meine ich.
das könnte doch dann so ausehen oder?
if( in_array( $var, $ergebnis) ) {
gruß mosiz
Hallo mosiz!
Das mit dem Array scheint ja zu klappen.
warum nicht mit $_POST['var'] oder warum mit $_GET['var']?
Weil du die Variable ja im Link übergibst, also per GET und nicht in einem formular oder so (wobei Formular nicht zwingend = POST ist, aber meist ist das so).
Götz
ich ich habs :).
ich erstelle ein leeres array z.B.
$tabellenname = array()
und führe array_push($tablename, mysql_result( $ergebnis, $i ));
in der for schleife aus
auserhalb der for kann ich dann die if so aufbauen
if( in_array( $menue, $tablename) ) {
cool, danke für den denk anstoss
-------------------------------------------------------------------
Nichts wahrhaft Wertvolles erwächst aus Ehrgeiz oder bloßem Pflichtgefühl, sondern vielmehr aus Liebe und Treue zu Menschen und Dingen.
Albert Einstein (1879 – 1955)
Physiker und Nobelpreisträger
Hi,
weiß nicht ob ich die Frage verstanden habe,
aber du willst nur feststellen, ob die Tabelle existiert?
dann selektier doch einfach einen Datensatz aus der Tabelle, wenn du null oder einen Fehler bekommst, gibt's das ding nicht.
SELECT * FROM tabellenname LIMIT 0,1;
Oder man kann auch glaub ich die Tabelle direkt selektieren (also nicht über alle und dann aussortieren) mit:
SHOW TABLE tabellenname;
BTW: du solltest aufpassen, wenn du variablen bzw. Übergabeparameter direkt in dein Statment einbaust, stell die vor es ruft einer die seite mit "seite.html?var=tabellexy;delete from tabellexy"
Greetz,
Versuch mal folgendes:
while ($line = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
{
if ($line["Tables_in_[deineDB]"] == "tabellen_name")
{
Anweisungen;
}
}
der ausdruck ["Tables_in_[deineDB]"] könnte evtl. anders laut (versionsunterschiede). Müsstest "SHOW TABLES" in per pure SQL einfach mal abfragen und schauen wie die Spaltenüberschrift lautet.
cya.