Kleines MySQL-Tool
King Casi
- datenbank
Hallo Leute,
ich arbeite gerade an einem kleinen MySQL-Tool, bei dem man sich die Datenbanken eines MySQL-Servers anschauen kann, die dazugehörigen Tabellen und die dazugehörigen Felder.
Das klappt auch soweit.
Ich kann in diesem Tool auch die Daten ansehen. Aber damit nicht genug, die Daten sollen auch bearbeitet werden. Und das ist mein Problem: Ich weiß im voraus nicht, wie die einzelnen Felder lauten. Daher habe ich keinen Lösungsansatz, wie ich ein UPDATE oder DELETE Statement erzeugen kann.
Kann mir vielleicht jemand weiterhelfen?
Danke!
Casi
Moin!
Kann mir vielleicht jemand weiterhelfen?
http://www.selfphp.info/funktionsreferenz/mysql_funktionen/mysql_field_name.php
Danke!
Bitteschön.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
http://www.selfphp.info/funktionsreferenz/mysql_funktionen/mysql_field_name.php
Danke, aber das ist nicht mein Problem: Die Feldnamen erhalte ich ja. Aber wie kann ich die in ein DELETE * FROM Table WHERE ... einbauen? Das ist mein Problem.
Moin!
http://www.selfphp.info/funktionsreferenz/mysql_funktionen/mysql_field_name.php
Danke, aber das ist nicht mein Problem: Die Feldnamen erhalte ich ja. Aber wie kann ich die in ein DELETE * FROM Table WHERE ... einbauen? Das ist mein Problem.
Das brauchst Du gar nicht. Der Befehl DELETE löscht _immer_ alle Spalten Deiner Tabelle, die mit der WHERE - Klausel übereinstimmen.
Was Du suchst ist eventuell:
UPDATE tabellenname SET spalte = NULL WHERE bedingun(en)
Falls das Deine Frage nicht beantwortet formuliere diese in diesem Thread neu.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
Der Befehl DELETE löscht _immer_ alle Spalten Deiner Tabelle, die mit der WHERE - Klausel übereinstimmen.
UPS. Es sind natürlich die Zeilen, die komplett gelöscht werden. Und zwar soweit sie mit der WHERE - Klausel übereinstimmen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
ich arbeite gerade an einem kleinen MySQL-Tool, bei dem man sich die Datenbanken eines MySQL-Servers anschauen kann, die dazugehörigen Tabellen und die dazugehörigen Felder.
Da sollten wir uns zusammentun. Ich bin auch gerade dabei...
Hier mein Einstand:
//---- Funktion zur Ermittlung der Metadaten einer Tabelle -----
function get_info($con,$table)
{
if (!$con) return false;
if (strlen($table) == 0) return false;
$sql = "show columns from $table";
$res = mysql_query($sql,$con);
if (!$res) return false;
$info = array();
while ($rec = mysql_fetch_assoc($res))
{
$field=$rec["Field"];
unset($rec["Field"]);
$info["$field"]=$rec;
}
return $info;
}
# ["Null"]
# ["Key"]
# ["Default"]
# ["Extra"]
//---------------------------------------------------------------
Sinn der Funktion ist es, ein Array mit den Metadaten der Spalten eine Tabelle zu erhalten, dass als Index den Spaltennamen hat.
Man kann dann später z.B. einer Anzeigefunktion einfach die vermeintlichen Feldnamen übergeben, die man sehen will. Die Anzeigefunktion prüft dann, ob diese vorhanden sind und stellt sie typgerecht dar. Dazu muss natürlich für jeden Datentyp eine Anzeigemethode vorhanden sein.
Typen sind zur Zeit:
tinyint
smallint
mediumint
int
bigint
float
double
decimal
date
datetime
timestamp
time
year
char
varchar
tinyblob
tinytext
text
blob
mediumblob
mediumtext
longblob
longtext
enum
set
Du siehst also, es ist viel zu tun.
MySQL kennt keine logischen Felder. Allerdings lassen sich die String-Untertypen ENUM (eins aus 65535) und SET(n aus 64) dafür verwenden.
Beide sind aber mit Vorsicht zu genießen, insbesondere, wenn man numerische Werte hinterlegt. Es wird dann nämlich erst mit dem Wert verglichen und dann noch mit dem Index. Leider habe ich bisher keine Möglichkeit gefunden, das Verhalten zu kontrollieren.
Außerdem können bei einer nachträglichen Änderung in der Liste ALLE Daten der Spalte verloren gehen.
Freu mich auf Antwort
Tom