Autor Zpráva
cenek
Profil *
Dobrý den, potřeboval bych poradit, jak vytvořit tabulku v MySQL, která se bude jmenovat podle obsahu proměnné. Například:
mysql_query ("create table $jmeno_tabulky(id integer primary key auto_increment,
nick varchar(20),
prispevky TEXT)");

píše mi to hlášku, že mám nějakou chybu v SQL syntaxi a vůbec nevim, o co se jedná...
Kdyby jsem dal místo tý proměnný nějaký jméno např. kniha, tak to funguje...
karel
Profil *
třeba je problém s předáním té proměnné $jmeno_tabulky do toho dotazu ... a tím pádem se snažíš uložit tabulku s názvem "$jmeno_tabulky" ?
cenek
Profil *
jo, aspoň to si MySQL myslí
karel
Profil *
no takže není problém s SQL, ale s PHP.... jakým způsobem přiřazuješ obsah do té proměnné?
cenek
Profil *
klasika... $jmeno_tabulky="naky meno";
karel
Profil *
nevím, nic mi to neříká :(, zkus tohle:

MySQL_Query ("create table ".$jmeno_tabulky." (id int auto_increment, nick varchar(20),
prispevky TEXT, primary key(id));");
cenek
Profil *
už sem to zkoušel, a nepomohlo to...
Icepoint
Profil
mozna zalezi na verzi mysql ... skus "create table '$jmeno_tabulky' ..."
cenek
Profil *
Tohle taky nepomohlo, Sice mi to tu proměnnou zřetězí, ale hlásí mi to zas nákou chybu
karel
Profil *
napiš jakou chybu (přesně)
cenek
Profil *
Dobre... Dnes us nemam cas, zitra to sem dam. Dik za ochotu :)
cenek
Profil *
dělal jsem to různými způsoby, ale ani jeden nefunguje


Tak problém je tento:



//$id po kazdym zapisu naroste o 1


$sql = <<<sql
CREATE TABLE $id(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key auto_increment)
sql;

mysql_query($sql, $spojeni) or die("Nelze vytvorit tabulku: " . mysql_error() . mysql_errno());


Hlaska:
Nelze vytvorit tabulku: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '70(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key aut' at line 11064

___________________________________________


$sql="CREATE TABLE $id(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key auto_increment)";

mysql_query($sql, $spojeni) or die("Nelze vytvorit tabulku: " . mysql_error() . mysql_errno());


Hlaska:
Nelze vytvorit tabulku: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '71(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key aut' at line 11064

___________________________________________


$sql="CREATE TABLE '$id'(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key auto_increment)";

mysql_query($sql, $spojeni) or die("Nelze vytvorit tabulku: " . mysql_error() . mysql_errno());


Hlaska:
Nelze vytvorit tabulku: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''72'(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key a' at line 11064

___________________________________________

Výsledek je stejný jako předchozí, i když tam dám CREATE TABLE ".$id."(jmeno varchar(20)..."

___________________________________________


No, a kdys zadam misto promenny $id normalni text, tak se tabulka vytvori

$sql="CREATE TABLE tabulka2(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key auto_increment)";

mysql_query($sql, $spojeni) or die("Nelze vytvorit tabulku: " . mysql_error() . mysql_errno());


___________________________________________

A nakonec zadam do konzole:

mysql> CREATE TABLE tabulka(jmeno varchar(20),prispevek text,datum varchar(30),id integer primary key auto_increment);
Query OK, 0 rows affected (0.33 sec)


A tabulka se vytvori
cenek
Profil *
Ještě něco... Mám PHP5 a MySQL5
Mergi
Profil *
$sql="CREATE TABLE $jmeno_tabulky ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY ( id), jmeno VARCHAR(20), prispevek TEXT, datum DATE)";

http://mysql.org/doc/refman/5.0/en/create-table.html
cenek
Profil *
Tam není problém s tímhle: id INT NOT NULL AUTO_INCREMENT Mám problém ten, že jakmile do názvu strčím proměnnou, tak mi to napíše furt stejnou chybovou hlášku... Díky za link.
Aesir
Profil
cenek:

Název tabulky nesmí začínat číslicí.

edit: resp. musí začínat písmenem
cenek
Profil *
Hmm, v tom návodu na http://mysql.org/doc/refman/5.0/en/create-table.html se řeší, jak vytvořit tabulku přímo pomocí SQL, ale mě obyčejná SQL syntaxe v konzoli funguje
cenek
Profil *
Děkuji. Jsem trochu začátečník. S číslem to nefunguje ani v konzoli :) Omlouvám se, moje chyba.
Toto téma je uzamčeno. Odpověď nelze zaslat.