Autor | Zpráva | ||
---|---|---|---|
kat Profil * |
#1 · Zasláno: 26. 8. 2006, 23:16:09
Pro ty, kterým nefunguje u databáze funkce MySQL_Affected_Rows() k získání, zda proběhl příkaz INSERT (mně teda ne) může pomoct tohle řešení:
Pokud nemáte sloupec s auto_increment, musíte jej vytvořit, poté po příkazu INSERT uložíte do proměnné hodnotu auto_incremetu pomocí funkce MySQL_Insert_Id() a ptáte se, zda tato proměnná má pravdivou hodnotu. Př.: MySQL_Query('INSERT ...'); $auto_increment=MySQL_Insert_Id(); if($auto_increment) { ... } else { ... } Omlouvám se, jestli to tady někdy už zaznělo, nicméně doufám, že kdo si s tímto problémem lámal hlavu stejně dlouho jako já, tak to ocení. |
||
Joker Profil |
#2 · Zasláno: 27. 8. 2006, 00:04:38 · Upravil/a: Joker
Ale na to stačí akorát to mysql_query, ne?
V případě chyby v dotazu vrátí mysql_query false. A cituji z manuálu: Ne-FALSE vrácená hodnota znamená, že dotaz byl vykonán serverem bez chyb. Takže já osobně dělám něco na způsob: if(!mysql_query($sql)) die("Chyba pri komunikaci s db"); ...a dál už předpokládám, že dotaz proběhl. edit: Akorát teda nevíte, kolik řádků (a jestli vůbec nějaký) se vlastně přidalo. Ale to nezjistíte ani přes to mysql_last_insert_id()... resp. u mysql_last_insert_id() víte, že se přidal alespoň jeden. |
||
kat Profil * |
#3 · Zasláno: 27. 8. 2006, 03:10:26
No vidíte, jakej jsem vůl největšího kalibru :-[ . Úplně jsem zapoměl, že Query vrací i false. Opravdu moc děkuju za připomenutí.
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0