» »

[PHP] Podvajanje vnosov v mysql tabelo

[PHP] Podvajanje vnosov v mysql tabelo

roli ::

Torej imam problemček. Trenutno delam neko skripto za vnos podatkov v bazo. Pred vnosom hočem preveriti ali je ta uporabnik to stvar že komentiral (gre se pač za neke komentarje) in, če je njegov komentar preprosto posodobiti drugače pa vnesti novo vrstico. Vse lepo in prav do tukaj vendar mi prekleta skripta pri vnosu v tabelo ali pa pri updejtu vnos preprosto potroji. Torej dobim namesto enega komentarja kar 3 (seveda identične).

Koda, ki to dela je tukaj:
	
$poglej = mysql_query("SELECT * FROM igre_mnenja WHERE id_igre = '$id_igre' AND id_uporabnika = '$user_id'") or die(mysql_error());
if (mysql_num_rows($poglej) == 0)
{
        mysql_query("INSERT INTO igre_mnenja (id_igre,id_uporabnika,mnenje) VALUES ('$id_igre','$user_id','$mnenje')") or die(mysql_error());
}
else
{
	mysql_query("UPDATE igre_mnenja SET mnenje = '$mnenje' WHERE id_uporabnika = '$user_id' AND id_igre = '$id_igre'") or die(mysql_error());
}


Torej zakaj mi ta stvar potroji vnose?
http://www.r00li.com

krho ::

OMG use PDO.
Ne vem sicer kateri editor uporabljaš, daj zaženi skripto preko debuggerja.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net

t3hn0 ::

ocitno ti stavek
if (mysql_num_rows($poglej) == 0)
ne koristi najbolje...jaz bi premislil na tej tocki.

za taka preverjanja jaz kar fetcham zadeve iz baze, za preverjanje stevila rezultatov pa sem udomacil mysql_affected_rows()...torej v mojem primeru bi to zgledalo tako:
$poglej = mysql_fetch_array ( mysql_query("SELECT * FROM igre_mnenja WHERE id_igre = '$id_igre' AND id_uporabnika = '$user_id'") );
if (mysql_affected_rows() == 0) // vrne stevilo vrstic prejsnje mysql operacije
{
mysql_query("INSERT INTO igre_mnenja (id_igre,id_uporabnika,mnenje) VALUES ('$id_igre','$user_id','$mnenje')") or die(mysql_error());
}
else
{
mysql_query("UPDATE igre_mnenja SET mnenje = '$mnenje' WHERE id_uporabnika = '$user_id' AND id_igre = '$id_igre'") or die(mysql_error());
}

p.s. in dela ;)
^.^

roli ::

Hmmm dela ja - ampak tudi moja stvar dela. Ravnokar sem opazil, da se to podvajanje pojavi samo pri eni igri v bazi - čeprav je bila vnešena na isti način in se praktično ne razlikuje od drugih. Torej ni mi jasno zakaj drugje dela normalno in ne podvaja vnosov ampak tam pa jih.
http://www.r00li.com


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

php-localhost!

Oddelek: Omrežja in internet
5803 (593) technolog
»

PHP - pomoč

Oddelek: Izdelava spletišč
131863 (1507) BlueRunner
»

Pošiljanje v mysql bazo

Oddelek: Izdelava spletišč
61089 (1023) zaj_tam
»

PHP help!

Oddelek: Programiranje
251735 (1573) rc-car
»

Zakaj? (php & mySQL)

Oddelek: Programiranje
51227 (1154) darh

Več podobnih tem