Autor Zpráva
fjf
Profil
mysql_query("UPDATE aaa SET pocet=$pocet+1 WHERE id=$id")

je toto správny zápis a ak áno, je správny všeobecne, alebo len ak sú $pocet a $id čísla?
či to má byť nasledovne:

mysql_query("UPDATE aaa SET pocet='" . $pocet . "'+1 WHERE id='" . $id . "'")
Taps
Profil
fjf:
mysql_query("UPDATE aaa SET pocet=pocet+1 WHERE id='$id'") ;
fjf
Profil
Taps:
nechcem pocet zvysit o 1 ale priradit mu hodnotu premennej $pocet zvysenej o 1...
A navyse si si isty, ze to prve id=$id nefunguje?
panther
Profil
fjf:
a proč si nezkusíš, jestli ti to do DB zaíše hodnotu proměnné zvýšenou o jedna? Měl bys to rychleji, než napsat dotaz zde do diskuse.

je správny všeobecne, alebo len ak sú $pocet a $id čísla?
i tohle si můžeš vyzkoušet. Jak bys ke stringu chtěl přičíst jedničku? Jablko+1 = hruška? Nebo snad jablko+1 = dvě jablka?
fjf
Profil
pretoze skusanim funguju niekedy aj nestandardne, nespravne zapisane veci a ja sa to chcem naucit a nielen zistit co funguje a mozno o rok prestane...

takze ak vas spravne chapem:
pocet=$pocet+1 je mozne pouzit len pre cisla
id=$id moze byt pre cisla, ale ak je to retazec, tak:

id='" . $id . "' nemusi byt
id='$id' plne postacuje

OK?
panther
Profil
fjf:
id='$id' plne postacuje
ano, pokud je string obalen uvozovkami. String může být v PHP obalen i apostrofy, pak bys musel z řetězce vyskakovat.

Osobně mi ale přijde přehlednější první zápis, který jsi uvedl, a sice id='" . $id . ". Je to jen otázka osobních sympatií.

Nikde nemáš ošetřené vstupy do DB, tzn. mysql_real_escape_string() pro stringy, (int) pro integery.
Taps
Profil
fjf:
pocet=$pocet+1 je mozne pouzit len pre cisla
no jistě, co jiné chceš sčítat než čísla

id='$id' plne postacuje
z bezpečnostního důvodu nepostačuje. Pozor na sql injection. $id musíš ošetřit pomocí intval
viz např. http://php.vrana.cz/obrana-proti-sql-injection.php
fjf
Profil
Dik za info.
fjf
Profil
je možný nasledovný zápis?

mysql_query("UPDATE xxx SET yyy" . $typ . "+=1 WHERE ...

ide o to, že tabuľka xxx obsahuje stĺpce yyyA, yyyB, yyyC kde sa zaznamenáva počet príspevkov užívateľov vo fórach A, B, C
pcmanik
Profil
Taps:
Tiez nieje dobry zapis, bohate staci
mysql_query("UPDATE aaa SET pocet = pocet + 1 WHERE id = $id ") ;


fjf:
Si to skus vyskusat, mi niesme o moc mudrejsi, ako ty. Ale vyzera to na zly navrch tabulky, no z tvojho popisu sa to moc neda posudit.
fjf
Profil
pcmanik:

v com konkretne vidis zly navrh?

mam proste tri fora oznacme ich A, B, C a ked niekto prispeje do niektoreho z nich, zvysi sa pocetnost v tabulke xxx v stlpci yyyA (resp. yyyB resp. yyyC)...

zaujima ma, ci ten zapis - kombinacia textu a premennej - na vyjadrenie nazvu stlpca je v poriadku:

mysql_query("UPDATE xxx SET yyy" . $typ . "+=1 WHERE ...
o_O
Profil
fjf:
zaujima ma, ci ten zapis - kombinacia textu a premennej - na vyjadrenie nazvu stlpca je v poriadku:
yyy".$typ." je v pořádku, dalo by se však vynechat toho spojování, popř. obalit proměnnou mezi {}.
fjf
Profil
Ahojte, neviem pochopit nasledovnu vec:

mysql_query("SELECT pocet,lock FROM ... - mi nefunguje
mysql_query("SELECT * FROM ... - mi funguje

Z tabulky, z ktorej to chcem nacitat stlpce pocet a lock su stlpce, prve typu integer a druhe tinyinteger.

V com moze byt problem?
panther
Profil
fjf:
lock je v MySQL rezervované slovo, což by ti prozradil i vypsaný mysql_error().

Řešením je ideálně sloupec přejmenovat (navíc nebudeš míchat CZ a EN názvy sloupců), a/nebo uzavřít názvy sloupců do zpětných apostrofů.
fjf
Profil
panther:

ok, dik, to som netusil a z tohto "supplied argument is not a valid MySQL result resource" som to nepochopil, aj ked som zacal podozrievat "pocet" :-D (len mi neslo do hlavy preco v anglickom php to ma byt problem :o) pritom anglicke "lock" som nepodozrieval :-D)
panther
Profil
fjf:
to som netusil a z tohto "supplied argument is not a valid MySQL result resource" som to nepochopil
toto není výstup mysql_erroru, to je varování PHP, které ti sděluje, že v SQL dotazu je blíže nespecifikovaná chyba (kterou přesně určí zmiňovaný mysql_error).
fjf
Profil
Ako spravne zapisat toto?

mysql_query("SELECT aaa FROM bbb WHERE " . $typ . "=1")
mysql_query("SELECT aaa FROM bbb WHERE $typ=1")
mysql_query("SELECT aaa FROM bbb WHERE '" . $typ . "'=1")

$typ obsahuje proste rozne hodnoty, ktore su zaroven nazvami stlpcov v tabulke bbb.
Ani jeden z tychto zapisov nefunguje.
Dik
Medvídek
Profil
fjf:
Tak si schválně nech vypsat mysql_error();
fjf
Profil
no nefunguje to, lebo:
a.) bez tejto podmienky skript bezi
b.) s touto podmienkou (okrem inych) nebezi

nevypisuje ziadny error, nehlasi chybu, len nebezi skript...

hodnota $typ je korektna, kedze predtym je iny skript a v nom:

mysql_query("UPDATE aaa SET xxx" . $typ . "=xxx" . $typ . "+1 WHERE ...")

beyi korektne.
fjf
Profil
a chyba bola samozrejme v preklepe :-D

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0