Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP MySQL Fatal error

AkeMake [23.02.2011 17:15:36]

#

Yritin ihan tavallisesti hakea rivejä tietokannasta, kun pukkasi tällaista virheilmoitusta:

Notice: Undefined variable: artice in .../helper.php on line 30

Fatal error: Call to a member function fetch() on a non-object in .../helper.php on line 30

Helper.php tiedosto

<?php
class ContentHelper {

	/**
	 * Palauttaa haetun artikkelin tiedot
	 */
	static function getArticle(&$lnk, $id, $permission) {

		$article = $lnk->prepare("SELECT * FROM ".DB_PREFIX."content WHERE access <= ? AND id = ?");
		$article->execute(array($permission, $id));
		return $artice->fetch(PDO::FETCH_ASSOC);
	}
}
?>

Rivi 30: return $article->fetch(PDO::FETCH_ASSOC);

Mikähän tuossa menee väärin ja mistä se johtuu? Sanakirjasta löytyi undefined sanalle suomennokset määrittelemätön ja epämääräinen. Miten niin $article on määrittelemätön (tai epämääräinen)?

Teuro [23.02.2011 17:23:06]

#

Halannet käyttää tuota article muuttujaa artice muuttujan sijaan.

The Alchemist [23.02.2011 17:25:17]

#

Luehan nyt. Et ole määritellyt muuttujaa $artice. Fetch() taas failaa täsmälleen samasta syystä: muuttujaa $artice ei ole olemassa, joten se ei myöskään voi olla olio, jollaisen operaattori '->' vaatii.

Vaikka korjaisit muuttujan nimen, niin kyseinen fatal error voi silti tapahtua, koska epäilen ettei SQL-kyselysi ole toimiva, koska katenoit DB_PREFIX'n arvon merkkijonoon todennäköisesti väärin. Vinkki: lisää yksi välilyönti.

AkeMake [23.02.2011 17:27:18]

#

Nyt kyllä hävettää.. Pitäisiköhän käydä testauttamassa onko minulla lukihäiriö. Miten ihmeessä voi näin töpeksiä ja tulla vielä esittelemään sitä töppäystä täällä. Tutkin nuo $article:t läpi ties kuinka monta kertaa eikä tuo sattunut silmään. Edes virheviestistä en huomannut tuota kirjoitusvirhettä. Miten voikin olla näin sokea kirjoitusvirheille. :(

The Alchemist kirjoitti:

Vinkki: lisää yksi välilyönti.

Kyllä tuo DB_PREFIX toimii hyvin kaikkialla muualla. Mihinhän tuo välilyönti pitäisi sijoittaa?

Teuro [23.02.2011 17:32:25]

#

<?php
 $article = $lnk->prepare("SELECT * FROM ".DB_PREFIX."content WHERE access <= ? AND id = ?");

 $article = $lnk->prepare("SELECT * FROM " . DB_PREFIX . "content WHERE access <= ? AND id = ?");
?>

Molempien yllä olevien pitäisi toimia aivan samalla tavalla.

The Alchemist [23.02.2011 18:22:36]

#

Niin no joo, en ajatellut taas tuota queryä. Mietin vaan, että 'contentia' ennen pitäisi olla väli. Maybe not.

Vastaus

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

Tietoa sivustosta