Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SELECT COUNT ongelma

Sivun loppuun

ZuBer [04.05.2011 14:49:18]

#

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.

Metabolix [04.05.2011 14:52:29]

#

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 = ?

ZuBer [04.05.2011 14:54:56]

#

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

Lebe80 [04.05.2011 15:55:16]

#

ZuBer kirjoitti:

$viestilukumaara->execute(array($_GET['profiili']));

Miksi sulla on tuo "array" tuolla executessa?

Metabolix [04.05.2011 15:57:20]

#

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ä.

ZuBer [04.05.2011 16:12:25]

#

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();

Metabolix [04.05.2011 16:13:33]

#

Millä perusteella sen pitäisi olla id? Sehän on COUNT(*). Voit myös laittaa lausekkeeseen COUNT(*) AS maara, jolloin nimeksi tulee maara.

ZuBer [04.05.2011 16:27:00]

#

Kiitos! Nyt toimii!

ZuBer [04.05.2011 20:46:36]

#

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).

Othnos [04.05.2011 21:22:32]

#

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ä?

ini_set("error_reporting", E_ALL | E_STRICT);
ini_set("display_errors", 1);

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta