Oto funkcja php tworząca tabelę napisana przeze mnie

(Uwaga - mogą być jakieś "Parse error", bo przekonwertowałem to z mego sterownika MySQL

):
Kod
function mysql_create_table($table,$fields){
$columns = count($fields); # Ile jest kolumn do dodania
$newtable = 0;
if($fields[$columns][1]=="primary key"){
$query = "CREATE TABLE $table (".$fields[1][1]." ".$fields[1][2]." ".$fields[1][3].",
".$fields[$columns][1]." (".$fields[$columns][2]."))";
$dec = 1;
}else{
$query = "CREATE TABLE $table (".$fields[1][1]." ".$fields[1][2]." ".$fields[1][3].")";
$dec = 0;
}
if(mysql_query($query)){
$newtable = 1;
$howmany++;
}
for($counter=2; $counter <=$columns-$dec; $counter++){
if($fields[$counter][1]!="primary key" && $fields[$counter][1]!="key"){
$query = "ALTER TABLE $table ADD ".$fields[$counter][1]." ".$fields[$counter][2];
if($fields[$counter][3]!=""){
$query .= " ".$fields[$counter][3];
}
$query .= " AFTER ".$fields[$counter-1][1];
}
if($fields[$counter][1]=="primary key" || $fields[$counter][1]=="key"){
if(!$newtable){
$query = "ALTER TABLE $table DROP INDEX ".$fields[$counter][1]." ADD ".$fields[$counter][1]." (".$fields[$counter][2].")";
}else{
$query = "ALTER TABLE $table ADD ".$fields[$counter][1]." (".$fields[$counter][2].")";
}
}
if(mysql_query($query)){
$howmany++;
}else{
die("MySQL error: error in adding column $fields[$counter][1] to table $table.");
}
}
return $howmany;
}
Funkcja zwraca ilość zainstalowanych poprawnie kolumn, a jako parametry przyjmuje kolejno: nazwę tworzonej tabeli, oraz tabelę pól. Przykładowa wygląda następująco:
Kod
$tabela = array(1=> array(1=>"id", "int(10)", "NOT NULL auto_increment"),
array(1=>"pole_textowe", "varchar(128)", ""),
array(1=>"blobek", "blob", "not null"),
array(1=>"primary key", "id"));
Tak więc tworzymy dwuwymiarową tabelę, przy czym każdy kolejny PIERWSZY indeks oznacza kolejne pole tabeli, a drugi ineks kolejno:
komórka 1 - nazwa pola
komórka 2 - typ pola
komórka 3 - ewentualne dodatkowe opcje (np. auto_increment).
Jeśli komórka 1 ma wartość key, lub primary key, do drugiej komórki wstawiamy nazw pola, któego się to tyczy, a trzecią zostawiamy w spokoju.
Mam nadzieję, że to rozwiąże twój problem, Palli

.