Autor | Zpráva | ||
---|---|---|---|
flowrock Profil |
#1 · Zasláno: 7. 9. 2015, 15:58:32
Zdravím, mohl by mi prosím někdo pomoci a osvětlit proč se mi nezapisují data do databáze? Respektive zde je příklad:
1) <? if ($_POST) { mysql_query("INSERT INTO registration(id,email,nick) VALUES('','$_POST[mail]','$_POST[nick]')"); echo('<p>Byl jste úspěšně zaregistrován.</p>'); } ?> <form method="post"> Email: <input type="text" name="mail" /><br /> Nick: <input type="text" name="nick" /><br /> Charakter: <select name="chara"><option value="main">Main</option><option value="alt">Alt</option></select> Classa: <select name="class"><option value="Knight">Dead Knight</option><option value="Druid">Druid</option><option value="Paladin">Paladin</option><option value="Warlock">Warlock</option><option value="Warrior">Warrior</option><option value="Rogue">Rogue</option><option value="Mage">Mage</option><option value="Priest">Priest</option><option value="Shaman">Shaman</option><option value="Hunter">Hunter</option></select> Primární: <select name="primary"><option value="Tank">Tank</option><option value="Healer">Healer</option><option value="Damage">Damage</option></select> Sekundární: <select name="secondary"><option value="Tank">Tank</option><option value="Healer">Healer</option><option value="Damage">Damage</option></select> <input type="submit" value="Registrovat" /> </form> tohle mi uplně v pořádku zapisuje do databáze :) to jsem rád, ovšem já bych potřeboval zapsat více parametrů. řešil jsem to takto : 2) <? if ($_POST) { mysql_query("INSERT INTO registration(id,email,nick,char,......) VALUES('','$_POST[mail]','$_POST[nick]','$_POST[chara]',......)"); echo('<p>Byl jste úspěšně zaregistrován.</p>'); } ?> <form method="post"> Email: <input type="text" name="mail" /><br /> Nick: <input type="text" name="nick" /><br /> Charakter: <select name="chara"><option value="main">Main</option><option value="alt">Alt</option></select> Classa: <select name="class"><option value="Knight">Dead Knight</option><option value="Druid">Druid</option><option value="Paladin">Paladin</option><option value="Warlock">Warlock</option><option value="Warrior">Warrior</option><option value="Rogue">Rogue</option><option value="Mage">Mage</option><option value="Priest">Priest</option><option value="Shaman">Shaman</option><option value="Hunter">Hunter</option></select> Primární: <select name="primary"><option value="Tank">Tank</option><option value="Healer">Healer</option><option value="Damage">Damage</option></select> Sekundární: <select name="secondary"><option value="Tank">Tank</option><option value="Healer">Healer</option><option value="Damage">Damage</option></select> <input type="submit" value="Registrovat" /> </form> samozřejmě místo teček byly další parametry, avšak při takovémto zápisu mi již do databáze nenaskočí vůbec nic, a to ani první tři parametry, který předtím samostatně fungovali. Prosím může mi někdo osvětlit co dělám špatně? |
||
juriad Profil |
#2 · Zasláno: 7. 9. 2015, 16:14:55
Chyba bude v těch tečkách (místu, které jsi sem záměrně nedal).
Ukaž celý ten řádek. A ukaž i definici tabulky v databázi (ideálně jako výstup příkazu SHOW CREATE TABLE registration ).
Na první je chybně název sloupce char , to je totiž rezervované slovo v MySQL (viz dev.mysql.com/doc/refman/5.6/en/keywords.html). Takové musíš uvést mezi zpětné apostrofy (na anglické klávesnici nad tabulátorem `).
Každou řetězcovou hodnotu kterou do dotazu vložíš musíš napřed escapovat funkcí mysql_real_escape_string, jinak ti hrozí zdánlivě náhodné chyby. |
||
flowrock Profil |
ten řádek jsem původně sem doplnil tečkami protože jsem to ke konci už ani s celým tím řádkem nezkoušel, tady je celý:
mysql_query("INSERT INTO members(id, pse, email, nick, char, class, primary, secondary, profesion1, profesion2, reasons) VALUES('','$_POST[pse]','$_POST[email]','$_POST[nick]','$_POST[char]','$_POST[class]','$_POST[primary]','$_POST[secondary]','$_POST[profesion1]','$_POST[profesion2]','$_POST[reasons]')"); tabulka: CREATE TABLE `registration` ( `id` int(5) NOT NULL AUTO_INCREMENT, `email` varchar(30) COLLATE latin2_czech_cs NOT NULL, `nick` varchar(20) COLLATE latin2_czech_cs NOT NULL, `char` varchar(20) COLLATE latin2_czech_cs NOT NULL, `class` varchar(20) COLLATE latin2_czech_cs NOT NULL, `primary` varchar(20) COLLATE latin2_czech_cs NOT NULL, `secondary` varchar(20) COLLATE latin2_czech_cs NOT NULL, `profesion1` varchar(20) COLLATE latin2_czech_cs NOT NULL, `profesion2` varchar(20) COLLATE latin2_czech_cs NOT NULL, `reasons` varchar(200) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `nick` (`nick`) ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin2 COLLATE=latin2_czech_cs EDIT: každopádně upravil jsem rezervované slova, a funguje to :) ... díky moc |
||
Časová prodleva: 9 let
|
0