Autor | Zpráva | ||
---|---|---|---|
fjf Profil |
#1 · Zasláno: 6. 8. 2011, 13:02:58
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 |
#2 · Zasláno: 6. 8. 2011, 13:04:43
fjf:
mysql_query("UPDATE aaa SET pocet=pocet+1 WHERE id='$id'") ; |
||
fjf Profil |
#3 · Zasláno: 6. 8. 2011, 13:13:51 · Upravil/a: fjf
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 |
#4 · Zasláno: 6. 8. 2011, 13:18:01
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 |
#5 · Zasláno: 6. 8. 2011, 13:33:24
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 |
#6 · Zasláno: 6. 8. 2011, 13:46:26
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 |
#7 · Zasláno: 6. 8. 2011, 13:49:49
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 |
#8 · Zasláno: 6. 8. 2011, 20:11:20
Dik za info.
|
||
fjf Profil |
#9 · Zasláno: 8. 8. 2011, 09:33:45
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 |
#10 · Zasláno: 8. 8. 2011, 10:07:17 · Upravil/a: pcmanik
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 |
#11 · Zasláno: 8. 8. 2011, 13:00:53
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 |
#12 · Zasláno: 8. 8. 2011, 13:03:02
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 {}. |
||
Časová prodleva: 5 dní
|
|||
fjf Profil |
#13 · Zasláno: 13. 8. 2011, 22:05:24
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 |
#14 · Zasláno: 13. 8. 2011, 22:11:19
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 |
#15 · Zasláno: 13. 8. 2011, 22:18:16
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 |
#16 · Zasláno: 13. 8. 2011, 22:21:51
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). |
||
Časová prodleva: 18 dní
|
|||
fjf Profil |
#17 · Zasláno: 31. 8. 2011, 17:39:40
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 |
#18 · Zasláno: 31. 8. 2011, 17:54:26
fjf:
Tak si schválně nech vypsat mysql_error(); |
||
fjf Profil |
#19 · Zasláno: 31. 8. 2011, 18:03:41
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 |
#20 · Zasláno: 31. 8. 2011, 21:58:10
a chyba bola samozrejme v preklepe :-D
|
||
Časová prodleva: 13 let
|
0