Tallennusvaiheessa kaatuu tämä homma. Mistähän voisi johtua
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET tehtava='5€, tyonid=13, tunnus=134' at line 1
Warning: mysql_fetch_assoc(): .....
$k = "SELECT tunnus, tyonid, tehtava FROM $this->taulu WHERE tunnus LIKE '%{$edellinenViikko}{$haettavanViikonVuosi}' AND tyyppi = $this->tyyppi"; $t = mysql_query($k); if(!$t){ return; } while($tulos = mysql_fetch_assoc($t)) { if(!empty($tulos['tehtava'])){ $ensimmainenArvo = $tulos['tunnus'][0]; $k = sprintf("INSERT INTO SET tehtava='%s, tyonid=%d, tunnus=%d, tyyppi=%d", htmlspecialchars($tulos['tehtava']), intval($tulos['tyonid']), intval($ensimmainenArvo.$tamanhetkinenViikko.$haettavanViikonVuosi), 1); } if(!($t = mysql_query($k))){ echo mysql_error(); } }
Olettaisin ainakin, että $this->taulu ja $this->tyyppi pitäisi olla {} sisällä.
Jos ei auta niin kokeile tulostaa $k arvo ja kerro miltä se näyttää.
$k:n arvo =
SELECT tunnus, tyonid, tehtava FROM viikkoraha WHERE tunnus LIKE '%512007' AND tyyppi = 1
seuraava kohta tunnus antaa taas arvoksi
$tulos['tunnus'] arvo on = 5€ 5€ 2€ 2€ 3€ 10€ työraha 10€ työraha
Tallennuksessa vain menee heti sitten pieleen.
Virhe on alla olevalla rivillä, pitää olla '%s',
tehtava='%s,
Se näkyi virheilmoituksessakin.
Ja htmlspecialchars on väärä funktio käytettäväksi tietokantaan menevän merkkijonon käsittelyyn. Oikea on mysql_real_escape_string.
Oho, olisi pitänyt lukea tarkemmin. Anteeksi että annoin huonon vastauksen. Näköjään tosiaan -> on ok ilman kaarisulkeitakin. Sinänsä mielestäni huonosti dokumentoitu tuo milloin kaarisulkeet on pakollisia ja milloin ei. Dokumentaatiosta löytyy kyllä esimerkkejä, mutta ei mielestäni mitään tyhjentävää kuvausta simple syntaksin rajoitteista.
Hyvä huomio = mysql_real_escape_string...
Aihe on jo aika vanha, joten et voi enää vastata siihen.