hi,
ich hatte das thema schon mal in einem anderem thread, da jetzt aber die funktion um die es geht eine andere ist, dachte ich mir das es besser ist das separat zu handhaben.
folgendes:
hab eine einfache funktion die mir anhand uebergegebener parameter zunaechst mal eine tabelle mit zwei spalten erzeugt. ist dies erfolgt werden spalten des gleichen typs (nur der name ist anders) hinzugefuegt.
aber das script ist so einfach, dass man es beim lesen besser versteht als ich es verbal erklaeren koennte:
und aufrufen tue ich es so (unter der funktionsdefinition, in der gleichen datei, sonst steht in der datei nichts ):
rufe ich es nun in der konsole auf (Fedora Core 4):
so laeuft das script beim ersten mal durch und die tabelle wird wie gewuenscht erzeugt, der name waere also nach obigem beispiel seg_6_sli_6_masterID
(und das ist auch die einzige tabelle die die datenbank enth�t).
bis hierher alles ok, aber ab jetzt hoert mein verstaendnis auf:
aendere ich nun den funktionsaufruf:
also die 6 in die 5 und rufe das script erneut auf:
kriege ich:
zuerst dachte ich, dass mysql vielleicht damit nicht klarkommt dass eine spalte (naemlich die letzte) immer genauso heisst (bis zur masterid) wie der name der tabelle, dem ist nicht so...
ja, und jetzt steh ich voellig ratlos da und hab nicht die geringste ahnung woran zum geier denn das haengen soll...
1. warum klappt es genau einmal, naemlich beim ersten funktionsaufruf, danach krieg ich ,obwohl ich die parameter im funktionsauf aendere und damit auch den tabellennamen der neuen tabelle aendere immer obige fehlermeldung
2. warum gibt es dieses problem ueberhaupt? um diesen fehler zu erhalten muesste ich doch innerhalb der funktion das gleiche "create table" -statement zweimal aufrufen. das tue ich aber nicht wie zu sehen ist.
danke fuer jeden tip, bin mit meinen ideen am ende.........
ich hatte das thema schon mal in einem anderem thread, da jetzt aber die funktion um die es geht eine andere ist, dachte ich mir das es besser ist das separat zu handhaben.
folgendes:
hab eine einfache funktion die mir anhand uebergegebener parameter zunaechst mal eine tabelle mit zwei spalten erzeugt. ist dies erfolgt werden spalten des gleichen typs (nur der name ist anders) hinzugefuegt.
aber das script ist so einfach, dass man es beim lesen besser versteht als ich es verbal erklaeren koennte:
Code:
function createMatrixTable($pCaption1, $pMaxX, $pCaption2, $pMaxY, $pMasterID) { // function vars define("DBName", "test"); define("DBServer", "localhost"); define("DBUser", "htbase"); define("DBPasswd", "reichtum"); $wrongArgsError = "Argumente falsch \ufffdbergeben, Aufruf: 1.String, 2.Int, 3.String, 4.Int 5.String \n"; // check args if (!is_string(pCaption1) or (!is_int($pMaxX)) or (!is_string($pCaption2)) or (!is_int($pMaxY)) or (!is_string($pMasterID))) { echo "$wrongArgsError"; exit; } else { // create db-conn $dbConn = mysql_connect(DBServer, DBUser, DBPasswd) or die("Keine Verbindung m\ufffdglich: ".mysql_error()); // select db mysql_select_db(DBName) or die("Auswahl der Datenbank fehlgeschlagen"); // create initial table containing only one column $tablename = $pCaption1 . "_" . $pMaxX ."_" . $pCaption2 . "_" . $pMaxY . "_" . $pMasterID; $queryCreateTable = "create table ". $tablename . " (" . "ID int auto_increment primary key, " . $pMasterID . " varchar(10))"; var_dump($queryCreateTable); mysql_query($queryCreateTable) or die("Anfrage fehlgeschlagen create table query: ".mysql_error()); // add columns for($i = 1; $i <= $pMaxX; $i++) { for($j = 1; $j <= $pMaxY; $j++) { $colName = $pCaption1 . "_" . $i . "_" . $pCaption2 . "_" . $j; $queryAddColumn = "alter table " . $tablename . " add column " . $colName . " float;"; mysql_query($queryAddColumn) or die("Anfrage Spalte hinzufuegen fehlgeschlagen: ".mysql_error()); } } mysql_close($dbConn); } }
Code:
createMatrixTable("seg", 6, "sli", 6, "masterID");
Code:
php createMatrixTables.php
(und das ist auch die einzige tabelle die die datenbank enth�t).
bis hierher alles ok, aber ab jetzt hoert mein verstaendnis auf:
aendere ich nun den funktionsaufruf:
Code:
createMatrixTable("seg", 5, "sli", 5, "masterID");
Code:
php createMatrixTables.php
Anfrage fehlgeschlagen create table query: Table 'seg_5_sli_5_masterID' already exists
ja, und jetzt steh ich voellig ratlos da und hab nicht die geringste ahnung woran zum geier denn das haengen soll...
1. warum klappt es genau einmal, naemlich beim ersten funktionsaufruf, danach krieg ich ,obwohl ich die parameter im funktionsauf aendere und damit auch den tabellennamen der neuen tabelle aendere immer obige fehlermeldung
2. warum gibt es dieses problem ueberhaupt? um diesen fehler zu erhalten muesste ich doch innerhalb der funktion das gleiche "create table" -statement zweimal aufrufen. das tue ich aber nicht wie zu sehen ist.
danke fuer jeden tip, bin mit meinen ideen am ende.........
Kommentar