Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Call to a member function rowCount() on a non-object in

p99o [10.04.2015 14:32:41]

#

PHP:ssa pieni ongelma tietokantakyselyn kanssa (PDO)

Kutsun koodissani metodia, joka käyttää luokkaa käsitelläkseen eräänlaisia sql-kyselyjä, joka puolestaan se kutsuu luokkaa (Database)
jossa itse tietokantakysely toteutetaan (your own PDO PHP Class).
Siis metodi, jossa kätetään luokkaa, jossa käytetään vielä toista luokkaa. Kutsutaan niitä nimillä tietynlaiaisaKyselyitäVartenOlevaLuokka ja Database.

public method eiToimi() {
$kysely = new tietynlaiaisaKyselyitäVartenOlevaLuokka(...);
$kysely->doQuery(...);
$kysely->databaseConnection->getRowCount(); // Kutsutaan luokassa A olevaa oliota  databaseConnection (public) ja metodia ->getRowCount(); virhe
}

Luokka A:ssa luodaan tietokantayhteys ($this->databaseConnection = new Database(...)) ja suoritetaan kysely (käytetään luokkaa Database).
public $databaseConnection;


Yritän kutsua tästä "your own PDO PHP Class" metodia joka palauttaa kyselyn rivimäärän getRowCount().
Itselläni se on muodossa ("stmt" vaihdettu koko koodissa "query"):

class Database {

    .......

    public function getRowCount() {
	    return $this->query->rowCount();
    }
}

Virheilmoitus on:

Fatal error: Call to a member function rowCount() on a non-object in ...

Mikä tässä nyt on niin pielessä?

Metabolix [10.04.2015 16:12:16]

#

Selvästikään $this->query ei sisällä mitään objektia, jolloin myöskään mitään jäsenfunktiota ei voi kutsua. Olet tunaroinut jotain. Mahdoton sanoa tuon koodin perusteella tarkemmin, mitä.

p99o [10.04.2015 17:13:03]

#

Homma selkis. Ongelma oli siinä ettei kysely ylipäätänsä suoriutunut (ei siis täten voida hakea rivimäärää yms.). Vika oli eräässä tarkastuksessa jota olin joskus mennyt "korjailemaan".

koodi on nyt kutakuinkin muotoa;

if($foo->doQuery()==true) {
		if($foo->databaseConnection->getRowCount()==0) {
			return true;
// jne...

Vastaus

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

Tietoa sivustosta