Autor Zpráva
Milhauscorpse
Profil *
Dobrý večer.Potřeboval bych poradit.
Nevím si rady s příkazem INSERT.
mám toto:
mysql_query("insert into zkusebna_uloz (datum,'$enter') values ('$datum','$oddo')")or die(mysql_error());

a stále mi to vyhazuje chybu:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1') values ('2015-01-01','12-00')' at line 1
A stále nemohu přijít na to kde je ta chyba v zápisu. (ta "1" je v tomhle případě ta proměnná "enter")
Děkuji za rady.
Dan Charousek
Profil
V názvů tabulek se nepoužívají apostrofy, místo nich tam jsou tyto. jejichž název neznám, zkosené apostrofíky: `` A nebo nebo je můžeš vynechat.
Jinak přečti si co psal o mysql_* funkcích lionel: jak vytahnot z databaze preve pripsanou informaci.
Milhauscorpse
Profil *
Změnil jsem tedy příkaz na toto:

mysql_query("insert into zkusebna_uloz (datum,`$enter`) values (`$datum`,`$oddo`)")or die(mysql_error());

A ted to vyhazuje toto:

Unknown column '2015-01-01' in 'field list'

To "2015-01-01" je v proměnné $datum a ne v názvu sloupce.


Změnil jsem tedy příkaz na toto:

mysql_query("insert into zkusebna_uloz (datum,`$enter`) values (`$datum`,`$oddo`)")or die(mysql_error());

A ted to vyhazuje toto:

Unknown column '2015-01-01' in 'field list'

To "2015-01-01" je v proměnné $datum a ne v názvu sloupce.
Dan Charousek
Profil
V názvů tabulek a sloupců se apostrofy nepoužívají. U hodnot naopak zůstávají:

insert into table(`datum`, `neco`) values('hodnota', 'dalsi hodnota')
Milhauscorpse
Profil *
Vyřešeno,děkuji!!!

mysql_query("insert into zkusebna_uloz (datum,`$enter`) values ('$datum','$oddo')")or die(mysql_error());

Jdu studovat ty zápisy!
Keeehi
Profil
Používání dynamických názvů sloupců ($enter) zavání špatným návrhem databáze.
Dan Charousek
Profil
[#6] Keeehi
Nejspíš máš pravdu, zápis nevypadá nejoptimálnějí (pominu-li to, že chybí ošetření vstupů), ale existují situace, kdy je to korektní (těžko říct, zda je to zrovna tato).

$data = array(
    "jmeno"    => "Dan",
    "prijmeni" => "Charousek",
    "datum"    => "2015-01-28"
);

$q = "INSERT INTO table(" . implode(",", array_keys($data)) . ") VALUES('" . implode("','", $data) . "') ";
$db->query($q);
Keeehi
Profil
Dan Charousek:
Samozřejmě že existují legitimní případy. Proto jsem nepsal, že je to 100% špatně. Účelem toho příspěvku však bylo hlavně dát Milhauscorpse vědět že možná nedělá věci standardně a dát mu možnost se o to začít zajímat.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: