Topic: Sudėtis
Niekaip nesigauna:
UPDATE lentele SET taskai=taskai+0.1 WHERE nickas=Min2liz
Ko tik nebandžiau, bet kai žirniai į sieną. Neveikia. Nesudeda skaičių. Kas buvo susidūrę su skaičiavimu?
PHP ir MySQL programavimas, SQL užklausos, duomenų bazės, PHP scriptai, pagalba, diskusijos, pamokos ir straipsniai.
You are not logged in. Please login or register.
PHP ir MySQL → SQL užklausos ir duomenų struktūros → Sudėtis
Niekaip nesigauna:
UPDATE lentele SET taskai=taskai+0.1 WHERE nickas=Min2liz
Ko tik nebandžiau, bet kai žirniai į sieną. Neveikia. Nesudeda skaičių. Kas buvo susidūrę su skaičiavimu?
Neradau tokio dalyko vadovėlyje. Aš tai išimčiau į php kintamąjį, sudėčiau ir pamerkčiau į duombazę atgal.
Bandziau ir taip daryti, ir taip nesigauna.
$sql = mysql_fetch_assoc(mysql_query("SELECT taskai FROM lentele WHERE nickas=Min2liz"));
$taskai = $sql['taskai'] + 0.01;
mysql_query("UPDATE lentele SET taskai=$taskai WHERE nickas=Min2liz");
Ir nieko ...
Gal laukas "taskai" yra sveikojo tipo ("integer") ir todel negali pridėti trupmeninio skaičiaus? Ar padarytas prisijungimas prie duomenų bazės?
Aš tai per PHP daryciau (čia $prisijungimas - prisijungimas prie duomenų bazės, kuris turėtų būti su duomenų baze atliekamų PHP veiksmų pradžioje). Bet netikrinau, gal ir klaidų čia privėliau.
$uzklausa="SELECT taskai FROM lentele WHERE nickas=Min2liz";
$rezultatas=mysql_query($uzklausa, $prisijungimas);
$uzrasas=mysql_fetch_object($rezultatas);
$taskai= $uzrasas->taskai + 0.01;
$uzklausa="UPDATE lentele SET taskai={$taskai} WHERE nickas=Min2liz";
mysql_query($uzklausa, $prisijungimas);
Niekaip nesigauna:
UPDATE lentele SET taskai=taskai+0.1 WHERE nickas=Min2liz
Ko tik nebandžiau, bet kai žirniai į sieną. Neveikia. Nesudeda skaičių. Kas buvo susidūrę su skaičiavimu?
O tai kodėl kai rašot "neveikia" neparašot kokias klaidas rodo, kokį rezultatą rodo ar kitus simptomus iš kurių sprendžiate, kad kažkad neveikia?
Pvz.:
mysql> SELECT 1 + 1.1;
+---------+
| 1 + 1.1 |
+---------+
| 2.1 |
+---------+
1 row in set (0.01 sec)
Viskas veikia.
Pabandyk pažiūrėt:
a) ar stulpelis taškai yra realaus tipo (t.y. ar jame galima laikyti realius skaičius);
b) ar jau tame stulpelyje yra kokia nors reikšmė (0, 1, 2.5 ir pan.);
c) ar yra iš vis įrašų atitinkančių tavo WHERE salygą;
Ar padarytas prisijungimas prie duomenų bazės?
Patylėsiu
$uzklausa="SELECT taskai FROM lentele WHERE nickas=Min2liz";
$rezultatas=mysql_query($uzklausa, $prisijungimas);
$uzrasas=mysql_fetch_object($rezultatas);
$taskai= $uzrasas->taskai + 0.01;
$uzklausa="UPDATE lentele SET taskai={$taskai} WHERE nickas=Min2liz";
mysql_query($uzklausa, $prisijungimas);
Pasakyk kuo dabar taip skiriasi nuo mano parašymo, išskyrus kad pas tave dvigubai eilučių.
O tai kodėl kai rašot "neveikia" neparašot kokias klaidas rodo, kokį rezultatą rodo ar kitus simptomus iš kurių sprendžiate, kad kažkad neveikia?
Esmė ta ir yra kad visiškai jokios klaidos nemeta.
b) ar jau tame stulpelyje yra kokia nors reikšmė (0, 1, 2.5 ir pan.);
Tai juk rašau UPDATE, tai reiškias gali būti. Default nustatytas 0
c) ar yra iš vis įrašų atitinkančių tavo WHERE salygą;
Jei nebūtų salygos kam tada daryčiau WHERE?
Neįsižeiskit bet toks įspūdis susidarė kad visišku debilu laikot. Ir atsakinėjat kaip užsiciklinę neatkreipiat į patį klausimą. Manau galit rakinti temą, nes su tokiais atsakymais toli nenueisiu. Dėkui už tai kad ir ką parašėt.
"Pasakyk kuo dabar taip skiriasi nuo mano parašymo, išskyrus kad pas tave dvigubai eilučių." - pažymėjau $prisijungimas , kad atkreipčiau dėmesį, kad reikia prisijungti prie duomenų bazės norint per PHP ją pasiekti. Kaip turbūt pastebėtum perskaitęs kitas temas, čia lankosi įvairūs žmonės - kai kas dar ką tik instaliavęs MySQL būna ir bando pagal instrukcijas kažką padaryti, kiti pavyzdžiui yra programavę su kitom programavimo kalbom, bet tik pradeda su PHP, dar kiti jau daugiau moka - vien iš nicko nesuprasi, kiek tas žmogus žino apie MySQL ar PHP todėl natūralu, kad žmonės primena ir atrodo savaime suprantamus dalykus, nes jei kažkas tik pradeda su MySQL/PHP dirbti tai jam tie dalykai nebus savaime suprantami. Ir pradedantieji tai ne debilai.
Niekas dėl nieko neįsižeidinėja. Problema tame, kad taip kaip tu uždavei klausima tikrai galima buvo spręsti, kad esi dar naujokas dirbamas su duombazėm. Jeigu tarkim aš ilgai užtrukęs prie kažkokios bėdos bandyčiau ieškoti pagalbos tai pateikčiau truputį daugiau duomenų:
- lentelės struktūrą;
- pradinių duomenų samplą;
- tų pačių duomenų samplą po užklausos;
- viską, ka pagražino MySQL'as vykdant užklausą;
- mysql versiją;
Esmė ta ir yra kad visiškai jokios klaidos nemeta.
Esmė, kad to nepaminėjai klausime. Taip pat esmė, kad ne vien klaidas pagražina užklausos. Gali pagražinti tarkim, kad užklausa pakeitė 0 eilučių, kad būtų pakankamai informatyvu ir padėtų
Tai juk rašau UPDATE, tai reiškias gali būti. Default nustatytas 0
Jeigu tu pateikei UPDATE užklausą, tai man dar tikrai neaišku, kokios yra default reikšmės, kiek yra įrašu lentelėje, ir kokios yra stulpelių reikšmės (niekas juk netrukdo turėti NULL reikšmę stulpelyje, kai jo DEFAULT reikšmė yra 0, turint omenyje, kad nenurodei stulpelio tipo).
Jei nebūtų salygos kam tada daryčiau WHERE?
Aš klausiau ar tuo menu, kai vykdei užklausą lentelėje buvo įrašų atitinkančių WHERE sąlygą. To klausiau, nes klausimas buvo skurdžiai suformuluotas. Tokiais atvejais iš žmonių tenka visą informaciją išgaudinėti papildomai.
Neįsižeiskit bet toks įspūdis susidarė kad visišku debilu laikot. Ir atsakinėjat kaip užsiciklinę neatkreipiat į patį klausimą. Manau galit rakinti temą, nes su tokiais atsakymais toli nenueisiu. Dėkui už tai kad ir ką parašėt.
Matai, reikalas tas, kad kalba eina elementarią užklausa su elementaria operacija. Aš esu 100% tikras, kad tiesiog kažkur padarei žioplą klaidą. Ypač tą jausmą pastiprina tas faktas, kad neatsakei į mano a) klausimą (kaip ir į DY pastebėjimą dėl stulpelio tipo). Taip pat iš pateikto PHP kodo matosi, kad netikrini nei kokias klaidas pagražino mysql'as nei kiek eilučių paveikė užklausos.
Temos čia nėra rakinamos ir tikriausiai nebus, visada galima jas papildyti ir pratęsti.
PHP ir MySQL → SQL užklausos ir duomenų struktūros → Sudėtis
Powered by PunBB, supported by Informer Technologies, Inc.