Schrift
[thread]1008[/thread]

komischer create table fehler



<< >> 1 Eintrag, 1 Seite
supersucker
 2005-11-17 18:11
#10266 #10266
User since
2005-03-17
118 Artikel
BenutzerIn
[default_avatar]
hi,

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: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
function createMatrixTable($pCaption1, $pMaxX, $pCaption2, $pMaxY, $pMasterID) {


// function vars

define("DBName", "test");
define("DBServer", "localhost");
define("DBUser", "htbase");
define("DBPasswd", "reichtum");

$wrongArgsError = "Argumente falsch &�bergeben, 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&�glich: ".mysql_error());

// select db

mysql_select_db(DBName) or die("Auswahl der Datenbank fehlgeschlagen");

// create initial table containing only two columns

$tablename = $pCaption1 . "_" . $pMaxX ."_" . $pCaption2 . "_" . $pMaxY . "_" . $pMasterID;

$queryCreateTable = "create table ". $tablename . " ("


. "ID int auto_increment primary key, "


. $pMasterID . " varchar(10))";


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());


} &nbsp
;
}

mysql_close($dbConn);

}
}


(das letzte alleinstehende semikolon vor dem mysql_close gibt es nicht! das hat das board aus was für gründen auch immer eingefügt! auch die formatierung hat es zerlegt....)

und aufrufen tue ich es so (unter der funktionsdefinition, in der gleichen datei, sonst steht in der datei nichts):

Code: (dl )
createMatrixTable("seg", 6, "sli", 6, "masterID");


rufe ich es nun in der konsole auf (Fedora Core 4):

Code: (dl )
php createMatrixTables.php


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ält).

bis hierher alles ok, aber ab jetzt hoert mein verstaendnis auf:

aendere ich nun den funktionsaufruf:

Code: (dl )
createMatrixTable("seg", 5, "sli", 5, "masterID");


also die 6 in die 5 und rufe das script erneut auf:

Code: (dl )
php createMatrixTables.php


kriege ich:

Quote
Anfrage fehlgeschlagen create table query: Table 'seg_5_sli_5_masterID' already exists


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 für jeden tip, bin mit meinen ideen am ende.........

P.S.: sorry wenn die formatierung der funktion sch.... aussieht, aber das forum hier zerhaut meine komplette formatierung...
<< >> 1 Eintrag, 1 Seite



View all threads created 2005-11-17 18:11.