Autor Zpráva
kat
Profil *
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
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 *
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í.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0