Autor Zpráva
Slapy
Profil
Moderátor Joker: 1. Titulek „Problém z insert“ je moc obecný.
2. Co to dělá v PHP? Přesouvám do databází
Dobrý deň, tak už dobrých pár hodín skúšam vložiť do DB pár údajov ale neúspešne v mysql som uplný amatér a síce som hľadal na internete ale fakt neviem v čom môže byť chyba.
Mám nasledujúcu tabuľku:
CREATE TABLE `user` (
   `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
   `username` VARCHAR( 200 ) NOT NULL ,
   `password` VARCHAR( 200 ) NOT NULL ,
   `salt` VARCHAR( 200 ) NOT NULL,
   `mail` VARCHAR( 200 ) NOT NULL ,
   `web` VARCHAR( 200 ) NOT NULL ,
   `rand_chars` VARCHAR( 200 ) NOT NULL ,
   `prava` TINYINT NOT NULL ,
   `verified` TINYINT NOT NULL ,
   `stav` TINYINT NOT NULL ,
   `datum` DATETIME NOT NULL default '0000-00-00 00:00:00',
   `lastlogin` TIMESTAMP default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    UNIQUE (`username` , `mail` )
) ENGINE = innodb CHARACTER SET utf8 COLLATE utf8_slovak_ci;

Tabuľku mi to vytvorilo takže neviem či môže byť chyba aj v tomto SQL príkaze. Ale keď sa do nej pokúsim vložiť:
$username="meno";
$mail="email";
$web="";
$datum = date('Y-m-d H:i:s', time());
$sol = "sol";
$encrypted = "heslo";
$query = "insert into user (username, password, salt, mail, web, rand_chars, prava, verified, stav, datum, lastlogin) values ('$username', '$encrypted', '$sol', '$mail', '$web', '0', '0', '0', '0', '$datum', 'now()'";
mysql_query($query) or die ("<b>Nastala nepredpokladaná chyba v MySQL.</b>.\n<br />Query: " . $query . "<br />\nError: (" . mysql_errno() . ") " . mysql_error());

Samozrejme spojenie z DB už je nadviazané. Vypisuje to chybu : Error: (1064) 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 '' at line 1.
Som si skoro istý že to bude dáka banalitka.
pcmanik
Profil
Chybala ti tam zatvorka

$query = "insert into user (username, password, salt, mail, web, rand_chars, prava, verified, stav, datum, lastlogin) values ('$username', '$encrypted', '$sol', '$mail', '$web', '0', '0', '0', '0', '$datum', 'now()')";


A mysql ma tiez svoje funkcie pre datum, takze namiesto tvojej premennej datum staci ked pouzijes UTC_TIMESTAMP() priamo v tom query
Bertram
Profil
Nevím jestli jste dal na rady chybové hlášky, ale ta syntaxe u INSERT je opravdu špatná.
pcmanik
Profil
Bertram:
Co je na nej zle, okrem toho, ze tam chybala ta zatvorka? Lebo to vravis, ako keby bola cela zle. Pricom ina chyba tam nieje. Maximalne ze dava aj cisla do uvodzoviek, ale to sa neda povazovat za to ze je to priamo zle.
Slapy
Profil
pcmanik:
Ďakujem za vyriešenie. Asi by som si už mal dať pauzu :-).
jenikkozak
Profil
Slapy:
Obsah obalený apostrofy se stává řetězcem.
0 je číslo; "'0' je řetězec; now() je funkce; 'now()' je řetězec, který obsahuje text now().

Návrh té tabulky je zvláštní. Mícháš tam anglické a české názvy, budiž. Ale víš, jak vypadá 200 znaků dlouhé uživatelské jméno? Blázen, který si takové zvolí, by si měl uvědomit, že jej bude muset vyplňovat při přihlášení. :)

Edit: Ách jo, vždyť jsi ze svého příspěvku vymazal otázku, na kterou reaguji.
Slapy
Profil
jenikkozak:
Prepáč za vzniklé nedorozumenie ale už som to vyriešil a tvoj príspevok tu ešte nebol keď som to zeditoval. Prišiel som na to s tymi uvodzovkami ako píšeš :-) a miesta v DB mám k dispozícii kopu tak prečo nedať všade 200 keď to vyzerá pekne? :-) inak to mám v php ošéfované na max. 25 a k tým názvom moja angličtina je neúplná a v cz/sk si dávam len tie veci ktorím nerozumiem alebo si nedokážem z hlavy preložiť význam.
a ešte To: pcmanik: UTC_TIMESTAMP() nemôžem použiť lebo to dáva čas v inom pásme now() dáva čas v správnom pásme takže som račej zostal pri tom $datum.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0