Autor | Zpráva | ||
---|---|---|---|
Matěj Hofman Profil |
#1 · Zasláno: 8. 3. 2015, 13:11:03
Dobrý den, prosím o radu.
Potřebuji na z webu získat zápis o přeposlání bodů mezi uživateli. Zápis vypadá takto: $insert2 = mysql_query("INSERT INTO `sendcredit`(`from`, `to`, `amount`, `date`, `note`, `id`) VALUES ([$user_name],[$komu],[$kolik],[$date],[$poznamka],['1']) ") or die(mysql_error()); Zkoušel jsem už spoustu variant a žádná nešla. Vyhodí mi to následunící chybu: 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 '[user1],[user2],[10],[08/03/2015 13:02:23],[note],['1'])' at line 1 Poraďte prosím, kde mám hledat chybu, díky. |
||
lionel messi Profil |
Matěj Hofman:
Zmaž hranaté zátvorky okolo vkladaných dát. Reťazce sa v SQL ohraničujú apostrofmi, čísla, dátumy a pod. ničím. Čiže takto: $insert2 = mysql_query("INSERT INTO `sendcredit`(`from`, `to`, `amount`, `date`, `note`, `id`) VALUES ('$user_name', '$komu', $kolik, $date, '$poznamka', 1) ") or die(mysql_error()); |
||
mimochodec Profil |
#3 · Zasláno: 8. 3. 2015, 15:45:51
lionel messi:
„dátumy a pod. ničím“ Nejsem si jist, ale myslím, že datum se bez obalení apostrofy neobejde. Navíc mysql nejspíš nesežere formát "08/03/2015 13:02:23", který se Matěj Hofman snaží použít. Volil bych tvar '2004-12-31 12:00:00'. |
||
Matěj Hofman Profil |
#4 · Zasláno: 8. 3. 2015, 18:45:56
Díky za rady :)
Ten formát data je v pořádku, funguje to, jak psal lionel messi , jen jsem ještě dal prázdné uvozovky u "id". |
||
Kubo2 Profil |
#5 · Zasláno: 8. 3. 2015, 19:26:04
mimochodec:
„Navíc mysql nejspíš nesežere formát "08/03/2015 13:02:23", který se Matěj Hofman snaží použít. Volil bych tvar '2004-12-31 12:00:00'.“ Pre malé uvedenie do obrazu by som doporučoval si prečítať Časové a dátumové literály v MySQL a Standard SQL. |
||
mimochodec Profil |
#6 · Zasláno: 8. 3. 2015, 19:51:33
Kubo2:
„Pre malé uvedenie do obrazu by som doporučoval“ No vida. Je pravda aspoň to, co jsem psal o těch apostrofech? |
||
Kubo2 Profil |
#7 · Zasláno: 8. 3. 2015, 20:22:56
mimochodec:
„Je pravda aspoň to, co jsem psal o těch apostrofech?“ Zľahka som to testoval a výsledok je nasledovný: • formát času HH:MM:SS je v SQL syntakticky inkorektný, takže sa čas bez apostrofov nezaobíde (resp. je možný alternatívny zápis číselného literálu HHMMSS ),
• formát dátumu v tvare YYYY-MM-DD sa vyhodnotí ako matematický rozdiel čísla YYYY a čísel MM a DD , pričom skončí runtime chybou ako pokus o vloženie neplatného číselného literálu, takže opäť v prípade dátumu je nutné použiť apostrofy alebo alternatívny zápis číselného literálu YYYYMMDD ,
• formát časodátumu ( datetime ) je syntakticky vlastne len kombináciou predchádzajúcich dvoch formátov, pričom skončí syntaktickou chybou pri HH:MM:SS ešte v čase kompilácie.
Takže v konečnom dôsledku je tvoje tvrdenie o nutnosti uzavretia časových resp. dátumových literálov do reťazcov správne, až na výnimku pri použití alternatívy v podobe číselného literálu. |
||
mimochodec Profil |
#8 · Zasláno: 9. 3. 2015, 00:37:17
Kubo2:
Děkuju. Neměl jsem to otestováno. |
||
Časová prodleva: 9 let
|
0