Moi!
Miten saan haettua käyttäjän viestien määrän?
Eli: käytin jotakin koodia, millä saan mysql-kyselyjä php-koodiin, joku $yhteys->prepade tai execute jotain tollaista siitä koodista löytyy. Mutta sitten kun yritän käyttää SELECT COUNT *.... toimintoa, heittää erroria.
Kirjotin siis sinne sulkujen sisään?:
?....?SELECT COUNT * FROM viestit WHERE lahettaja_id = ?
sitten seuraavalle riville:
?.....?(array($_GET['profiili']))
Jotain tohon suuntaan. Toivottavasti joku tajusi, koodi toisella koneella, niin hankala muistaa.
Kannattaa lukea ne virheilmoituksetkin.
MySQL kirjoitti:
SQLSTATE[42000]: Syntax error or access violation: 1064 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 'FROM viestit WHERE lahettaja_id = 1' at line 1
Toisin sanoen ennen FROM-sanaa on virhe. Mistä tahansa COUNT-hakua käsittelevästä esimerkistä näkisit, että oikeaan merkintään kuuluvat sulut:
SELECT COUNT(*) FROM viestit WHERE lahettaja_id = ?
Sitäkin on kokeiltu. Sulkujen kanssa.
//Tässä koodia ja virhe:
$viestilukumaara = $yhteys->prepare("SELECT COUNT (*) FROM viestit WHERE lahettaja_id = ? "); $viestilukumaara->execute(array($_GET['profiili']));
Virhe:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 '*) FROM viestit WHERE lahettaja_id = '2'' at line 1' in C:\xampp\htdocs\profiili.php:13 Stack trace: #0 C:\xampp\htdocs\profiili.php(13): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\profiili.php on line 13
ZuBer kirjoitti:
$viestilukumaara->execute(array($_GET['profiili']));
Miksi sulla on tuo "array" tuolla executessa?
Lebe, koska niin PDO toimii.
ZuBer, laitapa minun kyselyni ja sinun kyselysi allekkain ja mieti, mitä eroa niissä on. Voit myös soveltaa aiempaa vinkkiäni, että virhe on heti virheilmoituksen mainitsemassa kohdassa tai juuri ennen sitä.
Ahaa, eli tuo yksi sanaväli oli vikana? Nyt valittaa sitä, että kun nyt kirjoitan:
echo "Viestimäärä:" . $viestimaara[id];
Valittaa, että "Unfined index: id"..... Mikä siihen sitten pitää laittaa? Tuo on siis tuo viestimaara
$viestimaara = viestilukumaara -> fetch();
Millä perusteella sen pitäisi olla id? Sehän on COUNT(*). Voit myös laittaa lausekkeeseen COUNT(*) AS maara
, jolloin nimeksi tulee maara.
Kiitos! Nyt toimii!
Uusi ongelma.
If ($user['userlevel']==2) { $kysely = $yhteys->prepare("INSERT INTO alue (nimi, kuvaus) VALUES ?, ?"); $kysely->execute(array($_GET['nimi'], $_GET['kuvaus'])); } else { exit ("Ei oikeuksia"); }
Eli: kun uusialue.php:sta siirrytään lomakkeen kautta uusialuekasittelu.php:seen(koodi yllä), If-lauseketta ei huomioida. Mikä neuvoksi? (tuo ylläoleva koodi ei ole 100% varmasti se sama koodi, päästä tuli).
ZuBer kirjoitti:
Eli: kun uusialue.php:sta siirrytään lomakkeen kautta uusialuekasittelu.php:seen(koodi yllä), If-lauseketta ei huomioida.
Miten niin ei huomioida? Kuulostaa siltä, että kyseistä $user['userlevel']-muuttujaa ei ole määritetty missään. Onhan sinulla varmasti kaikki virheenraportoinnit päällä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.