Autor Zpráva
flowrock
Profil
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
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

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: